High performance interconnect

ABSTRACT

A physical layer (PHY) is coupled to a serial, differential link that is to include a number of lanes. The PHY includes a transmitter and a receiver to be coupled to each lane of the number of lanes. The transmitter coupled to each lane is configured to embed a clock with data to be transmitted over the lane, and the PHY periodically issues a blocking link state (BLS) request to cause an agent to enter a BLS to hold off link layer flit transmission for a duration. The PHY utilizes the serial, differential link during the duration for a PHY associated task selected from a group including an in-band reset, an entry into low power state, and an entry into partial width state.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation and claims the benefit of priorityunder 35 U.S.C. § 120) of U.S. application Ser. No. 17/134,242 filed onDec. 25, 2020, and entitled HIGH PERFORMANCE INTERCONNECT, whichapplication is a continuation of U.S. patent application Ser. No.16/937,499 filed on Jul. 23, 2020, which application is a continuationof Ser. No. 16/285,035, filed on Feb. 25, 2019, which application is acontinuation of U.S. patent application Ser. No. 15/393,153 filed onDec. 28, 2016, issued as U.S. Pat. No. 10,248,591 filed on Apr. 2, 2019,which application is a continuation of Ser. No. 14/060,191, filed onOct. 22, 2013, issued as U.S. Pat. No. 9,626,321 on Apr. 18, 2017, whichapplication claims benefit to U.S. Provisional Patent Application Ser.No. 61/717,091, filed Oct. 22, 2012. The disclosures of the priorapplications are considered part of and are hereby incorporated byreference in their entirety in the disclosure of this application.

FIELD

The present disclosure relates in general to the field of computerdevelopment, and more specifically, to software development involvingcoordination of mutually-dependent constrained systems.

BACKGROUND

Advances in semi-conductor processing and logic design have permitted anincrease in the amount of logic that may be present on integratedcircuit devices. As a corollary, computer system configurations haveevolved from a single or multiple integrated circuits in a system tomultiple cores, multiple hardware threads, and multiple logicalprocessors present on individual integrated circuits, as well as otherinterfaces integrated within such processors. A processor or integratedcircuit typically comprises a single physical processor die, where theprocessor die may include any number of cores, hardware threads, logicalprocessors, interfaces, memory, controller hubs, etc.

As a result of the greater ability to fit more processing power insmaller packages, smaller computing devices have increased inpopularity. Smartphones, tablets, ultrathin notebooks, and other userequipment have grown exponentially. However, these smaller devices arereliant on servers both for data storage and complex processing thatexceeds the form factor. Consequently, the demand in thehigh-performance computing market (i.e. server space) has alsoincreased. For instance, in modern servers, there is typically not onlya single processor with multiple cores, but also multiple physicalprocessors (also referred to as multiple sockets) to increase thecomputing power. But as the processing power grows along with the numberof devices in a computing system, the communication between sockets andother devices becomes more critical.

In fact, interconnects have grown from more traditional multi-drop busesthat primarily handled electrical communications to full blowninterconnect architectures that facilitate fast communication.Unfortunately, as the demand for future processors to consume at evenhigher-rates corresponding demand is placed on the capabilities ofexisting interconnect architectures.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a simplified block diagram of a system including aserial point-to-point interconnect to connect I/O devices in a computersystem in accordance with one embodiment;

FIG. 2 illustrates a simplified block diagram of a layered protocolstack in accordance with one embodiment;

FIG. 3 illustrates an embodiment of a transaction descriptor.

FIG. 4 illustrates an embodiment of a serial point-to-point link.

FIG. 5 illustrates embodiments of potential High PerformanceInterconnect (HPI) system configurations.

FIG. 6 illustrates an embodiment of a layered protocol stack associatedwith HPI.

FIG. 7 illustrates a representation of an example state machine.

FIG. 8 illustrates example control supersequences.

FIG. 9 illustrates a flow diagram of an example transition to a partialwidth state.

FIG. 10 illustrates an example training sequence.

FIG. 11 illustrates a representation of an example control windowembedded in a data stream.

FIG. 12 illustrates a flow diagram of an example handshake.

FIG. 13 illustrates an example transition from a partial width state.

FIG. 14 illustrates a schematic diagram of an example pattern generator.

FIG. 15 illustrates a representation of an example flit sent over anexample twenty-lane data link.

FIG. 16 illustrates a representation of an example flit sent over anexample eight-lane data link.

FIG. 17 illustrates a representation of an example multi-slot flit.

FIG. 18 illustrates a representation of an example flit sent over anexample eight-lane data link.

FIG. 19 illustrates a representation of use of an example floatingpayload field of an example multi-slot flit.

FIG. 20 illustrates a representation of an example viral error controlflit.

FIG. 21 illustrates a representation of an example multi-layer flitincluding a debug message.

FIG. 22 illustrates a representation of an example poison error controlflit.

FIG. 23 illustrates a representation of an example slot message forreturning credits and acknowledgements.

FIG. 24 illustrates credit return formats for use in the example slot ofFIG. 23.

FIG. 25 illustrates a flow diagram of example coherence protocolconflict management.

FIG. 26 illustrates a flow diagram of another example coherence protocolconflict management.

FIG. 27 illustrates a flow diagram of another example coherence protocolconflict management.

FIG. 28 illustrates a flow diagram of an example snoop response withwriteback to memory.

FIG. 29 illustrates a flow diagram of another example of a snoopresponse with writeback to memory.

FIG. 30 illustrates a flow diagram of an example writeback pushoperation.

FIG. 31 illustrates a flow diagram of an example writeback to memory.

FIG. 32 illustrates a flow diagram of an example memory controller flushoperation.

FIGS. 33-35 illustrate representations of example protocol state tables.

FIG. 36 illustrates a representation of an example nesting of protocolstate tables.

FIG. 37 illustrates a representation of use of a set of protocol statetables by an example testing engine.

FIG. 38 illustrates a representation of use of a set of protocol statetables by an example testing engine

FIG. 39 illustrates an embodiment of a block diagram for a computingsystem including a multicore processor.

FIG. 40 illustrates another embodiment of a block diagram for acomputing system including a multicore processor.

FIG. 41 illustrates an embodiment of a block diagram for a processor.

FIG. 42 illustrates another embodiment of a block diagram for acomputing system including a processor.

FIG. 43 illustrates an embodiment of a block for a computing systemincluding multiple processor sockets.

FIG. 44 illustrates another embodiment of a block diagram for acomputing system.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

In the following description, numerous specific details are set forth,such as examples of specific types of processors and systemconfigurations, specific hardware structures, specific architectural andmicro architectural details, specific register configurations, specificinstruction types, specific system components, specific processorpipeline stages, specific interconnect layers, specificpacket/transaction configurations, specific transaction names, specificprotocol exchanges, specific link widths, specific implementations, andoperation etc. in order to provide a thorough understanding of thepresent invention. It may be apparent, however, to one skilled in theart that these specific details need not necessarily be employed topractice the subject matter of the present disclosure. In otherinstances, well detailed description of known components or methods hasbeen avoided, such as specific and alternative processor architectures,specific logic circuits/code for described algorithms, specific firmwarecode, low-level interconnect operation, specific logic configurations,specific manufacturing techniques and materials, specific compilerimplementations, specific expression of algorithms in code, specificpower down and gating techniques/logic and other specific operationaldetails of computer system in order to avoid unnecessarily obscuring thepresent disclosure.

Although the following embodiments may be described with reference toenergy conservation, energy efficiency, processing efficiency, and so onin specific integrated circuits, such as in computing platforms ormicroprocessors, other embodiments are applicable to other types ofintegrated circuits and logic devices. Similar techniques and teachingsof embodiments described herein may be applied to other types ofcircuits or semiconductor devices that may also benefit from suchfeatures. For example, the disclosed embodiments are not limited toserver computer system, desktop computer systems, laptops, Ultrabooks™,but may be also used in other devices, such as handheld devices,smartphones, tablets, other thin notebooks, systems on a chip (SOC)devices, and embedded applications. Some examples of handheld devicesinclude cellular phones, Internet protocol devices, digital cameras,personal digital assistants (PDAs), and handheld PCs. Here, similartechniques for a high-performance interconnect may be applied toincrease performance (or even save power) in a low power interconnect.Embedded applications typically include a microcontroller, a digitalsignal processor (DSP), a system on a chip, network computers (NetPC),set-top boxes, network hubs, wide area network (WAN) switches, or anyother system that can perform the functions and operations taught below.Moreover, the apparatus', methods, and systems described herein are notlimited to physical computing devices, but may also relate to softwareoptimizations for energy conservation and efficiency. As may becomereadily apparent in the description below, the embodiments of methods,apparatus', and systems described herein (whether in reference tohardware, firmware, software, or a combination thereof) may beconsidered vital to a “green technology” future balanced withperformance considerations.

As computing systems are advancing, the components therein are becomingmore complex. The interconnect architecture to couple and communicatebetween the components has also increased in complexity to ensurebandwidth demand is met for optimal component operation. Furthermore,different market segments demand different aspects of interconnectarchitectures to suit the respective market. For example, serversrequire higher performance, while the mobile ecosystem is sometimes ableto sacrifice overall performance for power savings. Yet, it is asingular purpose of most fabrics to provide highest possible performancewith maximum power saving. Further, a variety of different interconnectscan potentially benefit from subject matter described herein.

The Peripheral Component Interconnect (PCI) Express (PCIe) interconnectfabric architecture and QuickPath Interconnect (QPI) fabricarchitecture, among other examples, can potentially be improvedaccording to one or more principles described herein, among otherexamples. For instance, a primary goal of PCIe is to enable componentsand devices from different vendors to inter-operate in an openarchitecture, spanning multiple market segments; Clients (Desktops andMobile), Servers (Standard and Enterprise), and Embedded andCommunication devices. PCI Express is a high performance, generalpurpose I/O interconnect defined for a wide variety of future computingand communication platforms. Some PCI attributes, such as its usagemodel, load-store architecture, and software interfaces, have beenmaintained through its revisions, whereas previous parallel busimplementations have been replaced by a highly scalable, fully serialinterface. The more recent versions of PCI Express take advantage ofadvances in point-to-point interconnects, Switch-based technology, andpacketized protocol to deliver new levels of performance and features.Power Management, Quality Of Service (QoS), Hot-Plug/Hot-Swap support,Data Integrity, and Error Handling are among some of the advancedfeatures supported by PCI Express. Although the primary discussionherein is in reference to a new high-performance interconnect (HPI)architecture, aspects of the invention described herein may be appliedto other interconnect architectures, such as a PCIe-compliantarchitecture, a QPI-compliant architecture, a MIPI compliantarchitecture, a high-performance architecture, or other knowninterconnect architecture.

Referring to FIG. 1, an embodiment of a fabric composed ofpoint-to-point Links that interconnect a set of components isillustrated. System 100 includes processor 105 and system memory 110coupled to controller hub 115. Processor 105 can include any processingelement, such as a microprocessor, a host processor, an embeddedprocessor, a co-processor, or other processor. Processor 105 is coupledto controller hub 115 through front-side bus (FSB) 106. In oneembodiment, FSB 106 is a serial point-to-point interconnect as describedbelow. In another embodiment, link 106 includes a serial, differentialinterconnect architecture that is compliant with different interconnectstandard.

System memory 110 includes any memory device, such as random accessmemory (RAM), non-volatile (NV) memory, or other memory accessible bydevices in system 100. System memory 110 is coupled to controller hub115 through memory interface 116. Examples of a memory interface includea double-data rate (DDR) memory interface, a dual-channel DDR memoryinterface, and a dynamic RAM (DRAM) memory interface.

In one embodiment, controller hub 115 can include a root hub, rootcomplex, or root controller, such as in a PCIe interconnectionhierarchy. Examples of controller hub 115 include a chipset, a memorycontroller hub (MCH), a northbridge, an interconnect controller hub(ICH) a southbridge, and a root controller/hub. Often the term chipsetrefers to two physically separate controller hubs, e.g., a memorycontroller hub (MCH) coupled to an interconnect controller hub (ICH).Note that current systems often include the MCH integrated withprocessor 105, while controller 115 is to communicate with I/O devices,in a similar manner as described below. In some embodiments,peer-to-peer routing is optionally supported through root complex 115.

Here, controller hub 115 is coupled to switch/bridge 120 through seriallink 119. Input/output modules 117 and 121, which may also be referredto as interfaces/ports 117 and 121, can include/implement a layeredprotocol stack to provide communication between controller hub 115 andswitch 120. In one embodiment, multiple devices are capable of beingcoupled to switch 120.

Switch/bridge 120 routes packets/messages from device 125 upstream, i.e.up a hierarchy towards a root complex, to controller hub 115 anddownstream, i.e. down a hierarchy away from a root controller, fromprocessor 105 or system memory 110 to device 125. Switch 120, in oneembodiment, is referred to as a logical assembly of multiple virtualPCI-to-PCI bridge devices. Device 125 includes any internal or externaldevice or component to be coupled to an electronic system, such as anI/O device, a Network Interface Controller (NIC), an add-in card, anaudio processor, a network processor, a hard-drive, a storage device, aCD/DVD ROM, a monitor, a printer, a mouse, a keyboard, a router, aportable storage device, a Firewire device, a Universal Serial Bus (USB)device, a scanner, and other input/output devices. Often in the PCIevernacular, such as device, is referred to as an endpoint. Although notspecifically shown, device 125 may include a bridge (e.g., a PCIe toPCI/PCI-X bridge) to support legacy or other versions of devices orinterconnect fabrics supported by such devices.

Graphics accelerator 130 can also be coupled to controller hub 115through serial link 132. In one embodiment, graphics accelerator 130 iscoupled to an MCH, which is coupled to an ICH. Switch 120, andaccordingly I/O device 125, is then coupled to the ICH. I/O modules 131and 118 are also to implement a layered protocol stack to communicatebetween graphics accelerator 130 and controller hub 115. Similar to theMCH discussion above, a graphics controller or the graphics accelerator130 itself may be integrated in processor 105.

Turning to FIG. 2 an embodiment of a layered protocol stack isillustrated. Layered protocol stack 200 can includes any form of alayered communication stack, such as a QPI stack, a PCIe stack, a nextgeneration high performance computing interconnect (HPI) stack, or otherlayered stack. In one embodiment, protocol stack 200 can includetransaction layer 205, link layer 210, and physical layer 220. Aninterface, such as interfaces 117, 118, 121, 122, 126, and 131 in FIG.1, may be represented as communication protocol stack 200.Representation as a communication protocol stack may also be referred toas a module or interface implementing/including a protocol stack.

Packets can be used to communicate information between components.Packets can be formed in the Transaction Layer 205 and Data Link Layer210 to carry the information from the transmitting component to thereceiving component. As the transmitted packets flow through the otherlayers, they are extended with additional information used to handlepackets at those layers. At the receiving side the reverse processoccurs and packets get transformed from their Physical Layer 220representation to the Data Link Layer 210 representation and finally(for Transaction Layer Packets) to the form that can be processed by theTransaction Layer 205 of the receiving device.

In one embodiment, transaction layer 205 can provide an interfacebetween a device's processing core and the interconnect architecture,such as Data Link Layer 210 and Physical Layer 220. In this regard, aprimary responsibility of the transaction layer 205 can include theassembly and disassembly of packets (i.e., transaction layer packets, orTLPs). The translation layer 205 can also manage credit-based flowcontrol for TLPs. In some implementations, split transactions can beutilized, i.e., transactions with request and response separated bytime, allowing a link to carry other traffic while the target devicegathers data for the response, among other examples.

Credit-based flow control can be used to realize virtual channels andnetworks utilizing the interconnect fabric. In one example, a device canadvertise an initial amount of credits for each of the receive buffersin Transaction Layer 205. An external device at the opposite end of thelink, such as controller hub 115 in FIG. 1, can count the number ofcredits consumed by each TLP. A transaction may be transmitted if thetransaction does not exceed a credit limit. Upon receiving a response anamount of credit is restored. One example of an advantage of such acredit scheme is that the latency of credit return does not affectperformance, provided that the credit limit is not encountered, amongother potential advantages.

In one embodiment, four transaction address spaces can include aconfiguration address space, a memory address space, an input/outputaddress space, and a message address space. Memory space transactionsinclude one or more of read requests and write requests to transfer datato/from a memory-mapped location. In one embodiment, memory spacetransactions are capable of using two different address formats, e.g., ashort address format, such as a 32-bit address, or a long addressformat, such as 64-bit address. Configuration space transactions can beused to access configuration space of various devices connected to theinterconnect. Transactions to the configuration space can include readrequests and write requests. Message space transactions (or, simplymessages) can also be defined to support in-band communication betweeninterconnect agents. Therefore, in one example embodiment, transactionlayer 205 can assemble packet header/payload 206.

Quickly referring to FIG. 3, an example embodiment of a transactionlayer packet descriptor is illustrated. In one embodiment, transactiondescriptor 300 can be a mechanism for carrying transaction information.In this regard, transaction descriptor 300 supports identification oftransactions in a system. Other potential uses include trackingmodifications of default transaction ordering and association oftransaction with channels. For instance, transaction descriptor 300 caninclude global identifier field 302, attributes field 304 and channelidentifier field 306. In the illustrated example, global identifierfield 302 is depicted comprising local transaction identifier field 308and source identifier field 310. In one embodiment, global transactionidentifier 302 is unique for all outstanding requests.

According to one implementation, local transaction identifier field 308is a field generated by a requesting agent, and can be unique for alloutstanding requests that require a completion for that requestingagent. Furthermore, in this example, source identifier 310 uniquelyidentifies the requestor agent within an interconnect hierarchy.Accordingly, together with source ID 310, local transaction identifier308 field provides global identification of a transaction within ahierarchy domain.

Attributes field 304 specifies characteristics and relationships of thetransaction. In this regard, attributes field 304 is potentially used toprovide additional information that allows modification of the defaulthandling of transactions. In one embodiment, attributes field 304includes priority field 312, reserved field 314, ordering field 316, andno-snoop field 318. Here, priority sub-field 312 may be modified by aninitiator to assign a priority to the transaction. Reserved attributefield 314 is left reserved for future, or vendor-defined usage. Possibleusage models using priority or security attributes may be implementedusing the reserved attribute field.

In this example, ordering attribute field 316 is used to supply optionalinformation conveying the type of ordering that may modify defaultordering rules. According to one example implementation, an orderingattribute of “0” denotes default ordering rules are to apply, wherein anordering attribute of “1” denotes relaxed ordering, wherein writes canpass writes in the same direction, and read completions can pass writesin the same direction. Snoop attribute field 318 is utilized todetermine if transactions are snooped. As shown, channel ID Field 306identifies a channel that a transaction is associated with.

Returning to the discussion of FIG. 2, a Link layer 210, also referredto as data link layer 210, can act as an intermediate stage betweentransaction layer 205 and the physical layer 220. In one embodiment, aresponsibility of the data link layer 210 is providing a reliablemechanism for exchanging Transaction Layer Packets (TLPs) between twocomponents on a link. One side of the Data Link Layer 210 accepts TLPsassembled by the Transaction Layer 205, applies packet sequenceidentifier 211, i.e. an identification number or packet number,calculates and applies an error detection code, i.e. CRC 212, andsubmits the modified TLPs to the Physical Layer 220 for transmissionacross a physical to an external device.

In one example, physical layer 220 includes logical sub block 221 andelectrical sub-block 222 to physically transmit a packet to an externaldevice. Here, logical sub-block 221 is responsible for the “digital”functions of Physical Layer 221. In this regard, the logical sub-blockcan include a transmit section to prepare outgoing information fortransmission by physical sub-block 222, and a receiver section toidentify and prepare received information before passing it to the LinkLayer 210.

Physical block 222 includes a transmitter and a receiver. Thetransmitter is supplied by logical sub-block 221 with symbols, which thetransmitter serializes and transmits onto to an external device. Thereceiver is supplied with serialized symbols from an external device andtransforms the received signals into a bit-stream. The bit-stream isde-serialized and supplied to logical sub-block 221. In one exampleembodiment, an 8b/10b transmission code is employed, where ten-bitsymbols are transmitted/received. Here, special symbols are used toframe a packet with frames 223. In addition, in one example, thereceiver also provides a symbol clock recovered from the incoming serialstream.

As stated above, although transaction layer 205, link layer 210, andphysical layer 220 are discussed in reference to a specific embodimentof a protocol stack (such as a PCIe protocol stack), a layered protocolstack is not so limited. In fact, any layered protocol may beincluded/implemented and adopt features discussed herein. As an example,a port/interface that is represented as a layered protocol can include:(1) a first layer to assemble packets, i.e. a transaction layer; asecond layer to sequence packets, i.e. a link layer; and a third layerto transmit the packets, i.e. a physical layer. As a specific example, ahigh performance interconnect layered protocol, as described herein, isutilized.

Referring next to FIG. 4, an example embodiment of a serial point topoint fabric is illustrated. A serial point-to-point link can includeany transmission path for transmitting serial data. In the embodimentshown, a link can include two, low-voltage, differentially driven signalpairs: a transmit pair 406/411 and a receive pair 412/407. Accordingly,device 405 includes transmission logic 406 to transmit data to device410 and receiving logic 407 to receive data from device 410. In otherwords, two transmitting paths, i.e. paths 416 and 417, and two receivingpaths, i.e. paths 418 and 419, are included in some implementations of alink.

A transmission path refers to any path for transmitting data, such as atransmission line, a copper line, an optical line, a wirelesscommunication channel, an infrared communication link, or othercommunication path. A connection between two devices, such as device 405and device 410, is referred to as a link, such as link 415. A link maysupport one lane—each lane representing a set of differential signalpairs (one pair for transmission, one pair for reception). To scalebandwidth, a link may aggregate multiple lanes denoted by xN, where N isany supported link width, such as 1, 2, 4, 8, 12, 16, 32, 64, or wider.

A differential pair can refer to two transmission paths, such as lines416 and 417, to transmit differential signals. As an example, when line416 toggles from a low voltage level to a high voltage level, i.e. arising edge, line 417 drives from a high logic level to a low logiclevel, i.e. a falling edge. Differential signals potentially demonstratebetter electrical characteristics, such as better signal integrity, i.e.cross-coupling, voltage overshoot/undershoot, ringing, among otherexample advantages. This allows for a better timing window, whichenables faster transmission frequencies.

In one embodiment, a new High Performance Interconnect (HPI) isprovided. HPI can include a next-generation cache-coherent, link-basedinterconnect. As one example, HPI may be utilized in high performancecomputing platforms, such as workstations or servers, including insystems where PCIe or another interconnect protocol is typically used toconnect processors, accelerators, I/O devices, and the like. However,HPI is not so limited. Instead, HPI may be utilized in any of thesystems or platforms described herein. Furthermore, the individual ideasdeveloped may be applied to other interconnects and platforms, such asPCIe, MIPI, QPI, etc.

To support multiple devices, in one example implementation, HPI caninclude an Instruction Set Architecture (ISA) agnostic (i.e. HPI is ableto be implemented in multiple different devices). In another scenario,HPI may also be utilized to connect high performance I/O devices, notjust processors or accelerators. For example, a high performance PCIedevice may be coupled to HPI through an appropriate translation bridge(i.e. HPI to PCIe). Moreover, the HPI links may be utilized by many HPIbased devices, such as processors, in various ways (e.g. stars, rings,meshes, etc.). FIG. 5 illustrates example implementations of multiplepotential multi-socket configurations. A two-socket configuration 505,as depicted, can include two HPI links; however, in otherimplementations, one HPI link may be utilized. For larger topologies,any configuration may be utilized as long as an identifier (ID) isassignable and there is some form of virtual path, among otheradditional or substitute features. As shown, in one example, a foursocket configuration 510 has an HPI link from each processor to another.But in the eight socket implementation shown in configuration 515, notevery socket is directly connected to each other through an HPI link.However, if a virtual path or channel exists between the processors, theconfiguration is supported. A range of supported processors includes2-32 in a native domain. Higher numbers of processors may be reachedthrough use of multiple domains or other interconnects between nodecontrollers, among other examples.

The HPI architecture includes a definition of a layered protocolarchitecture, including in some examples, protocol layers (coherent,non-coherent, and, optionally, other memory based protocols), a routinglayer, a link layer, and a physical layer. Furthermore, HPI can furtherinclude enhancements related to power managers (such as power controlunits (PCUs)), design for test and debug (DFT), fault handling,registers, security, among other examples. FIG. 5 illustrates anembodiment of an example HPI layered protocol stack. In someimplementations, at least some of the layers illustrated in FIG. 5 maybe optional. Each layer deals with its own level of granularity orquantum of information (the protocol layer 605 a,b with packets 630,link layer 610 a,b with flits 635, and physical layer 605 a,b with phits640). Note that a packet, in some embodiments, may include partialflits, a single flit, or multiple flits based on the implementation.

As a first example, a width of a phit 640 includes a 1 to 1 mapping oflink width to bits (e.g. 20 bit link width includes a phit of 20 bits,etc.). Flits may have a greater size, such as 184, 192, or 200 bits.Note that if phit 640 is 20 bits wide and the size of flit 635 is 184bits then it takes a fractional number of phits 640 to transmit one flit635 (e.g. 9.2 phits at 20 bits to transmit an 184 bit flit 635 or 9.6 at20 bits to transmit a 192 bit flit, among other examples). Note thatwidths of the fundamental link at the physical layer may vary. Forexample, the number of lanes per direction may include 2, 4, 6, 8, 10,12, 14, 16, 18, 20, 22, 24, etc. In one embodiment, link layer 610 a,bis capable of embedding multiple pieces of different transactions in asingle flit, and one or multiple headers (e.g. 1, 2, 3, 4) may beembedded within the flit. In one example, HPI splits the headers intocorresponding slots to enable multiple messages in the flit destined fordifferent nodes.

Physical layer 605 a,b, in one embodiment, can be responsible for thefast transfer of information on the physical medium (electrical oroptical etc.). The physical link can be point-to-point between two Linklayer entities, such as layer 605 a and 605 b. The Link layer 610 a,bcan abstract the Physical layer 605 a,b from the upper layers andprovides the capability to reliably transfer data (as well as requests)and manage flow control between two directly connected entities. TheLink Layer can also be responsible for virtualizing the physical channelinto multiple virtual channels and message classes. The Protocol layer620 a,b relies on the Link layer 610 a,b to map protocol messages intothe appropriate message classes and virtual channels before handing themto the Physical layer 605 a,b for transfer across the physical links.Link layer 610 a,b may support multiple messages, such as a request,snoop, response, writeback, non-coherent data, among other examples.

The Physical layer 605 a,b (or PHY) of HPI can be implemented above theelectrical layer (i.e. electrical conductors connecting two components)and below the link layer 610 a,b, as illustrated in FIG. 6. The Physicallayer and corresponding logic can reside on each agent and connects thelink layers on two agents (A and B) separated from each other (e.g. ondevices on either side of a link). The local and remote electricallayers are connected by physical media (e.g. wires, conductors, optical,etc.). The Physical layer 605 a,b, in one embodiment, has two majorphases, initialization and operation. During initialization, theconnection is opaque to the link layer and signaling may involve acombination of timed states and handshake events. During operation, theconnection is transparent to the link layer and signaling is at a speed,with all lanes operating together as a single link. During the operationphase, the Physical layer transports flits from agent A to agent B andfrom agent B to agent A. The connection is also referred to as a linkand abstracts some physical aspects including media, width and speedfrom the link layers while exchanging flits and control/status ofcurrent configuration (e.g. width) with the link layer. Theinitialization phase includes minor phases e.g. Polling, Configuration.The operation phase also includes minor phases (e.g. link powermanagement states).

In one embodiment, Link layer 610 a,b can be implemented so as toprovide reliable data transfer between two protocol or routing entities.The Link layer can abstract Physical layer 605 a,b from the Protocollayer 620 a,b, and can be responsible for the flow control between twoprotocol agents (A, B), and provide virtual channel services to theProtocol layer (Message Classes) and Routing layer (Virtual Networks).The interface between the Protocol layer 620 a,b and the Link Layer 610a,b can typically be at the packet level. In one embodiment, thesmallest transfer unit at the Link Layer is referred to as a flit whicha specified number of bits, such as 192 bits or some other denomination.The Link Layer 610 a,b relies on the Physical layer 605 a,b to frame thePhysical layer's 605 a,b unit of transfer (phit) into the Link Layer's610 a,b unit of transfer (flit). In addition, the Link Layer 610 a,b maybe logically broken into two parts, a sender and a receiver. Asender/receiver pair on one entity may be connected to a receiver/senderpair on another entity. Flow Control is often performed on both a flitand a packet basis. Error detection and correction is also potentiallyperformed on a flit level basis.

In one embodiment, Routing layer 615 a,b can provide a flexible anddistributed method to route HPI transactions from a source to adestination. The scheme is flexible since routing algorithms formultiple topologies may be specified through programmable routing tablesat each router (the programming in one embodiment is performed byfirmware, software, or a combination thereof). The routing functionalitymay be distributed; the routing may be done through a series of routingsteps, with each routing step being defined through a lookup of a tableat either the source, intermediate, or destination routers. The lookupat a source may be used to inject a HPI packet into the HPI fabric. Thelookup at an intermediate router may be used to route an HPI packet froman input port to an output port. The lookup at a destination port may beused to target the destination HPI protocol agent. Note that the Routinglayer, in some implementations, can be thin since the routing tables,and, hence the routing algorithms, are not specifically defined byspecification. This allows for flexibility and a variety of usagemodels, including flexible platform architectural topologies to bedefined by the system implementation. The Routing layer 615 a,b relieson the Link layer 610 a,b for providing the use of up to three (or more)virtual networks (VNs)—in one example, two deadlock-free VNs, VN0 andVN1 with several message classes defined in each virtual network. Ashared adaptive virtual network (VNA) may be defined in the Link layer,but this adaptive network may not be exposed directly in routingconcepts, since each message class and virtual network may havededicated resources and guaranteed forward progress, among otherfeatures and examples.

In one embodiment, HPI can include a Coherence Protocol layer 620 a,b tosupport agents caching lines of data from memory. An agent wishing tocache memory data may use the coherence protocol to read the line ofdata to load into its cache. An agent wishing to modify a line of datain its cache may use the coherence protocol to acquire ownership of theline before modifying the data. After modifying a line, an agent mayfollow protocol requirements of keeping it in its cache until it eitherwrites the line back to memory or includes the line in a response to anexternal request. Lastly, an agent may fulfill external requests toinvalidate a line in its cache. The protocol ensures coherency of thedata by dictating the rules all caching agents may follow. It alsoprovides the means for agents without caches to coherently read andwrite memory data.

Two conditions may be enforced to support transactions utilizing the HPICoherence Protocol. First, the protocol can maintain data consistency,as an example, on a per-address basis, among data in agents' caches andbetween those data and the data in memory. Informally, data consistencymay refer to each valid line of data in an agent's cache representing amost up-to-date value of the data and data transmitted in a coherenceprotocol packet can represent the most up-to-date value of the data atthe time it was sent. When no valid copy of the data exists in caches orin transmission, the protocol may ensure the most up-to-date value ofthe data resides in memory. Second, the protocol can providewell-defined commitment points for requests. Commitment points for readsmay indicate when the data is usable; and for writes they may indicatewhen the written data is globally observable and will be loaded bysubsequent reads. The protocol may support these commitment points forboth cacheable and uncacheable (UC) requests in the coherent memoryspace.

In some implementations, HPI can utilize an embedded clock. A clocksignal can be embedded in data transmitted using the interconnect. Withthe clock signal embedded in the data, distinct and dedicated clocklanes can be omitted. This can be useful, for instance, as it can allowmore pins of a device to be dedicated to data transfer, particularly insystems where space for pins is at a premium.

Physical Layer

A link can be established between two agents on either side of aninterconnect. An agent sending data can be a local agent and the agentreceiving the data can be a remote agent. State machines can be employedby both agents to manage various aspects of the link. In one embodiment,the Physical layer datapath can transmit flits from the link layer tothe electrical front-end. The control path, in one implementation,includes a state machine (also referred to as a link training statemachine or the similar). The state machine's actions and exits fromstates may depend on internal signals, timers, external signals or otherinformation. In fact, some of the states, such as a few initializationstates, may have timers to provide a timeout value to exit a state. Notethat detect, in some embodiments, refers to detecting an event on bothlegs of a lane; but not necessarily simultaneously. However, in otherembodiments, detect refers to detection of an event by an agent ofreference. Debounce, as one example, refers to sustained assertion of asignal. In one embodiment, HPI supports operation in the event ofnon-function lanes. Here, lanes may be dropped at specific states.

States defined in the state machine can include reset states,initialization states, and operational states, among other categoriesand subcategories. In one example, some initialization states can have asecondary timer which is used to exit the state on a timeout(essentially an abort due to failure to make progress in the state). Anabort may include updating of registers, such as status register. Somestates can also have primary timer(s) which are used to time the primaryfunctions in the state. Other states can be defined such that internalor external signals (such as handshake protocols) drive transition fromthe state to another state, among other examples.

A state machine may also support debug through single step, freeze oninitialization abort and use of testers. Here, state exits can bepostponed/held until the debug software is ready. In some instance, theexit can be postponed/held until the secondary timeout. Actions andexits, in one embodiment, can be based on exchange of trainingsequences. In one embodiment, the link state machine is to run in thelocal agent clock domain and transition from one state to the next is tocoincide with a transmitter training sequence boundary. Status registersmay be utilized to reflect the current state.

FIG. 7 illustrates a representation of at least a portion of a statemachine used by agents in one example implementation of HPI. It shouldbe appreciated that the states included in the state table of FIG. 7include a non-exhaustive listing of possible states. For instance, sometransitions are omitted to simplify the diagram. Also, some states maybe combined, split, or omitted, while others might be added. Such statescan include:

Event reset state: entered on a warm or cold reset event. Restoresdefault values. Initialize counters (e.g., sync counters). May exit toanother state, such as another reset state.

Timed reset state: timed state for in-band reset. May drive a predefinedelectrical ordered set (EOS) so remote receivers are capable ofdetecting the EOS and entering the timed reset as well. Receiver haslanes holding electrical settings. May exit to an agent to calibratereset state.

Calibrate reset state: calibration without signaling on the lane (e.g.receiver calibration state) or turning drivers off. May be apredetermined amount of time in the state based on a timer. May set anoperational speed. May act as a wait state when a port is not enabled.May include minimum residency time. Receiver conditioning or staggeringoff may occur based on design. May exit to a receiver detect state aftera timeout and/or completion of calibration.

Receiver detect state: detect presence of a receiver on lane(s). Maylook for receiver termination (e.g. receiver pulldown insertion). Mayexit to calibrate reset state upon a specified value being set or whenanother specified value is not set. May exit to transmitter calibratestate if a receiver is detected or a timeout is reached.

Transmitter calibrate state: for transmitter calibrations. May be atimed state allocated for transmitter calibrations. May includesignaling on a lane. May continuously drive an EOS, such as an electricidle exit ordered set (or EIEIOS). May exit to compliance state whendone calibrating or on expiration of a timer. May exit to transmitterdetect state if a counter has expired or a secondary timeout hasoccurred.

Transmitter detect state: qualifies valid signaling. May be a handshakestate where an agent completes actions and exits to a next state basedon remote agent signaling. Receiver may qualify valid signaling fromtransmitter. Receiver, in one embodiment, looks for a wake detect, andif debounced on one or more lanes looks for it on the other lanes.Transmitter drives a detect signal. May exit to a polling state inresponse to debounce being completed for all lanes and/or a timeout orif debounce on all lanes is not complete and there is a timeout. Here,one or more monitor lanes may be kept awake to debounce a wake signal.And if debounced then the other lanes are potentially debounced. Thiscan enable power savings in low power states.

Polling state: receiver adapts, initializes drift buffer and locks onbits/bytes (e.g. identifies symbol boundaries). Lanes may be deskewed. Aremote agent may cause an exit to a next state (e.g. a Link Width State)in response to an acknowledge message. Polling can additionally includea training sequence lock by locking to an EOS and a training sequenceheader. Lane to lane skew at remote transmitter may be capped at a firstlength for top speed and a second length for slow speed. Deskew may beperformed in a slow mode as well as an operational mode. Receiver mayhave a specific maximum to deskew lane-to-lane skew, such as 8, 16, or32 intervals of skew. Receiver actions may include latency fixing.Receiver actions, in one embodiment, can be completed on successfuldeskew of a valid lane map. A successful handshake can be achieved, inone example, when a number of consecutive training sequence headers arereceived with acknowledgements and a number of training sequences withan acknowledge are transmitted after the receiver has completed itsactions.

Link width state: agent communicates with the final lane map to remotetransmitter. Receiver receives the information and decodes. Receiver mayrecord a configured lane map in a structure after checkpoint of aprevious lane map value in a second structure. Receiver may also respondwith an acknowledge (“ACK”). May initiate an in-band reset. As oneexample, first state to initiate in-band reset. In one embodiment, exitto a next state, such as flit configuration state, is performed inresponse to the ACK. Further, prior to entering low power state, a resetsignal may also be generated if the frequency of a wake detect signaloccurrence drops below a specified value (e.g. 1 every number of unitintervals (UIs), such as 4K UI). Receiver may hold current and previouslane maps. Transmitter may use different groups of lanes based ontraining sequences having different values. Lane map may not modify somestatus registers in some embodiments.

Flitlock configuration state: entered by a transmitter but the state isconsidered exited (i.e. secondary timeout moot) when both transmitterand receiver have exited to a blocking link state or other link state.Transmitter exit to a link state, in one embodiment, includes start of adata sequence (SDS) and training sequence (TS) boundary after receivinga planetary alignment signal. Here, receiver exit may be based onreceiving an SDS from a remote transmitter. This state may be a bridgefrom agent to link state. Receiver identifies SDS. Receiver may exit toblocking link state (BLS) (or a control window) if SDS received after adescrambler is initialized. If a timeout occurs, exit may be to resetstate. Transmitter drives lanes with a configuration signal. Transmitterexit may be to reset, BLS, or other states based on conditions ortimeouts.

Transmitting Link State: a link state. Flits are sent to a remote agent.May be entered from a blocking link state and return to a blocking linkstate on an event, such as a timeout. Transmitter transmits flits.Receiver receives flits. May also exit to a low power link state. Insome implementations, transmitting link state (TLS) can be referred toas the L0 state.

Blocking Link State: a link state. Transmitter and receiver areoperating in a unified manner. May be a timed state during which thelink layer flits are held off while the Physical layer information iscommunicated to the remote agent. May exit to a low power link state (orother link state based on the design). A blocking link state (BLS), inone embodiment, periodically occurs. The period is referred to as a BLSinterval and may be timed, as well as may differ between slow speed andoperational speed. Note that the link layer may be periodically blockedfrom sending flits so that a Physical layer control sequence of a lengthmay be sent, such as during a transmitting link state or a partial widthtransmitting link state. In some implementations, blocking link state(BLS) can be referred to as a L0 control, or L0c, state.

Partial Width Transmitting Link State: Link state. May save power byentering a partial width state. In one embodiment asymmetric partialwidth refers to each direction of a two direction link having differentwidths, which may be supported in some designs. An example of aninitiator, such as a transmitter, sending a partial width indication toenter partial width transmitting link state is shown in the example ofFIG. 9. Here, a partial width indication is sent while transmitting on alink with a first width to transition the link to transmit at a second,new width. A mismatch may result in a reset. Note that speeds may not bealtered but width may be. Therefore, flits are potentially sent atdifferent widths. May be similar to a transmitting link state logically;yet, since there is a smaller width, it may take longer to transmitflits. May exit to other link states, such as a low power link statebased on certain received and sent messages or an exit of the partialwidth transmitting link state or a link blocking state based on otherevents. In one embodiment, a transmitter port may turn idle lanes off ina staggered manner to provide better signal integrity (i.e. noisemitigation) as shown in the timing diagram. Here, non-retry-able flits,such as Null flits, may be utilized during periods where the link widthis changing. A corresponding receiver may drop these null flits and turnidle lanes off in a staggered manner, as well as record the current andprevious lane maps in one or more structures. Note status and associatedstatus register may remain unaltered. In some implementations, partialwidth transmitting link state can be referred to as a partial L0, orL0p, state.

Exit Partial Width Transmitting Link State: exit the partial widthstate. May or may not use a blocking link state in some implementations.The transmitter initiates exit, in one embodiment, by sending partialwidth exit patterns on the idle lanes to train and deskew them. As oneexample, an exit pattern start with EIEOS, which is detected anddebounced to signal that the lane is ready to start the entry to a fulltransmitting link state, and may end with SDS or Fast Training Sequence(FTS) on idle lanes. Any failure during the exit sequence (receiveractions, such as deskew not completed prior to timeout) stops flittransfers to the link layer and asserts a reset, which is handled byresetting the link on the next blocking link state occurrence. The SDSmay also initialize the scrambler/descrambler on the lanes toappropriate values.

Low Power Link State: is a lower power state. In one embodiment, it islower power than the partial width link state, since signaling in thisembodiment is stopped on all lanes and in both directions. Transmittersmay use a blocking link state for requesting a low power link state.Here, receiver may decode the request and respond with an ACK or a NAK;otherwise reset may be triggered. In some implementations, low powerlink state can be referred to as a L1 state.

In some implementations, state transitions can be facilitated to allowstates to be bypassed, for instance, when state actions of the states,such as certain calibrations and configurations, have already beencompleted. Previous state results and configurations of a link can bestored and reused in subsequent initializations and configurations of alink. Rather than repeating such configurations and state actions,corresponding states can be bypassed. Traditional systems implementingstate bypasses, however, often implement complex designs and expensivevalidation escapes. Rather than using a traditional bypass, in oneexample, HPI can utilize short timers in certain states, such as wherethe state actions do not need to be repeated. This can potentially allowfor more uniform and synchronized state machine transitions among otherpotential advantages.

In one example, a software-based controller (e.g., through an externalcontrol point for the Physical layer) can enable a short timer for oneor more particular states. For instance, for a state for which actionshave already been performed and stored, the state can be short-timed tofacilitate a quick exit from the state to a next state. If, however, theprevious state action fails or cannot be applied within the short timerduration, a state exit can be performed. Further, the controller candisable the short timer, for instance, when the state actions should beperformed anew. A long, or default, timer can be set for each respectivestate. If configuration actions at the state cannot be completed withinthe long timer, a state exit can occur. The long timer can be set to areasonable duration so as to allow completion of the state actions. Theshort timer, in contrast, may be considerably shorter making it, in somecases, impossible to perform the state actions without reference back topreviously-performed state actions, among other examples.

In some instances, during initialization (or re-initialization) of alink, as agents progress through a state machine toward an operationallink state, one or more failures or state exits can occur that cause thestate to reset (e.g., to a reset or other state). In effect, theinitialization of the link can loop through one or more states withoutcompleting the initialization and entering a link state. In one example,a count can be maintained for the number of unproductive loops in statetransitions within the initialization of a link. For instance, each timean initialization returns to a reset state without reaching a link statea counter can be incremented. The counter can be reset for the link oncethe link successfully enters a link state. Such counters can bemaintained by agents on both sides of the link. Further, a threshold canbe set, for instance, by a software-based controller utilizing one ormore external control points. When the count of unproductive loops meets(or exceeds) the defined threshold initialization of the link can besuspended (e.g., set and held at or before the reset state). In someimplementations, in order to recommence initialization and release theinitialization from the suspended state, a software-based controller cantrigger a restart or re-initialization of the link. In some instances,the software-based tools can analyze the nature of the suspendedinitialize and perform diagnostics, set register values, and performother operations so as to guard against further looping of theinitialization. Indeed, in some implementations, a controller can set ahigher counter threshold or even override the counter, among otherexamples, in connection with restarting a suspended link initialization.

In some implementations of HPI, supersequences can be defined, eachsupersequence corresponding to a respective state or entry/exit to/fromthe respective state. A supersequence can include a repeating sequenceof data sets and symbols. The sequences can repeat, in some instances,until completion of a state or state transition, or communication of acorresponding event, among other examples. In some instances, therepeating sequence of a supersequence can repeat according to a definedfrequency, such as a defined number of unit intervals (UIs). A unitinterval (UI) can correspond to the interval of time for transmitting asingle bit on a lane of a link or system. In some implementations, therepeating sequence can begin with an electrically ordered set (EOS).Accordingly, an instance of the EOS can be expected to repeat inaccordance with the predefined frequency. Such ordered sets can beimplemented as defined 16 Byte codes that may be represented inhexadecimal format, among other examples. In one example, the EOS of asupersequence can be an EIEIOS. In one example, an EIEOS can resemble alow frequency clock signal (e.g., a predefined number of repeating FF00or FFF000 hexadecimal symbols, etc.). A predefined set of data canfollow the EOS, such as a predefined number of training sequences orother data. Such supersequences can be utilized in state transitionsincluding link state transitions as well as initialization, among otherexamples.

In some implementations of an interconnect, such as in QPI, terminationsof a serial data link can be brought on and off, such as when a link isreset or initialized. This approach can introduce complexity and timeinto the initialization of a link. In some implementations of HPI,terminations of the link can be maintained including during a reset orre-initialization of the link. Further, HPI can permit hot-plugging ofdevices. When another device is introduced, either through hot-pluggingor otherwise, the voltage characteristics of the lane on which the newremote agent is added will change. The local agent can sense thesechanges in the lane voltage to detect the presence of the remote agentand prompt initialization of the link. State machine states and timerscan be defined in the state machine to coordinate the detection,configuration, and initialization of a link without terminations.

In one implementation, HPI can support re-initialization on an in-bandreset without changing the termination values through the screening of alane by the receiving agent for incoming signaling. The signaling can beused to identify good lanes. As an example, the lane can be screened forany one of a set of pre-defined signals that are to be sent by atransmitter device to facilitate discovery and configuration of thelink. In one example, an supersequence can be defined corresponding toone or more initialization or re-initialization tasks. The pre-definedsequence can include an EIEOS followed by additional sequence data. Insome instances, as each device on either side of a lane becomes active,the devices can begin sending a supersequence corresponding to aparticular initialization state, etc. In one embodiment, two types ofpin resets can be supported; power-on (or “cold”) reset and warm reset.A reset initiated by software or originating (in the Physical or anotherlayer) on one agent may be communicated in-band to the other agent.However, due to usage of an embedded clock, an in-band reset may behandled by communication to another agent using an ordered set, such asa specific electrical ordered set or EIOS.

The ordered set can be sent during initialization and a PHY controlsequence (or “blocking link state”) can be sent after initialization.The block link state can block the link layer from sending flits. Asanother example, link layer traffic may be blocked to send a few NULLflits which may be discarded at the receiver.

As introduced above, initialization, in one embodiment, can be doneinitially at slow speed followed by initialization at fast speed.Initialization at slow speed uses the default values for the registersand timers. Software then uses the slow speed link to setup theregisters, timers and electrical parameters and clears the calibrationsemaphores to pave the way for fast speed initialization. As oneexample, initialization can consist of such states or tasks as Reset,Detect, Polling, and Configuration, among potentially others.

In one example, a link layer blocking control sequence (i.e. a blockinglink state (BLS) or L0c state) can include a timed state during whichthe link layer flits are held off while the PHY information iscommunicated to the remote agent. Here, the transmitter and receiver maystart a block control sequence timer. And upon expiration of the timers,the transmitter and receiver can exit the blocking state and may takeother actions, such as exit to reset, exit to a different link state (orother state), including states that allow for the sending of flitsacross the link.

In one embodiment, link training can be provided and include the sendingof one or more of scrambled training sequences, ordered sets, andcontrol sequences, such as in connection with a defined supersequence. Atraining sequence symbol may include one or more of a header, reservedportions, a target latency, a pair number, a physical lane map codereference lanes or a group of lanes, and an initialization state. In oneembodiment, the header can be sent with a ACK or NAK, among otherexamples. As an example, training sequences may be sent as part ofsupersequences and may be scrambled.

In one embodiment, ordered sets and control sequences are not scrambledor staggered and are transmitted identically, simultaneously andcompletely on all lanes. A valid reception of an ordered set may includechecking of at least a portion of the ordered set (or entire ordered setfor partial ordered sets). Ordered sets may include an electricallyordered set (EOS), such as an Electrical Idle Ordered Set (EIOS) or anEIEOS. A supersequence may include a start of a data sequence (SDS) or aFast Training Sequence (FTS). Such sets and control supersequences canbe predefined and may have any pattern or hexadecimal representation, aswell as any length. For example, ordered sets and supersequences may bea length of 8 bytes, 16, bytes, or 32 bytes, etc. FTS, as an example,can additionally be utilized for fast bit lock during exit of a partialwidth transmitting link state. Note that the FTS definition may be perlane and may utilize a rotated version of the FTS.

Supersequences, in one embodiment, can include the insertion of an EOS,such as an EIEOS, in a training sequence stream. When signaling starts,lanes, in one implementation, power-on in a staggered manner. This mayresult, however, in initial supersequences being seen truncated at thereceiver on some lanes. Supersequences can be repeated however overshort intervals (e.g., approximately one-thousand unit intervals (or ˜1KUI)). The training supersequences may additionally be used for one ormore of deskew, configuration and for communicating initializationtarget, lane map, etc. The EIEOS can be used for one or more oftransitioning a lane from inactive to active state, screening for goodlanes, identifying symbol and TS boundaries, among other examples.

Turning to FIG. 8, representations of example supersequences are shown.For instance, an exemplary Detect supersequence 805 can be defined. TheDetect supersequence 805 can include a repeating sequence of a singleEIEOS (or other EOS) followed by a predefined number of instances of aparticular training sequence (TS). In one example, the EIEOS can betransmitted, immediately followed by seven repeated instances of TS.When the last of the seven TSes is sent the EIEOS can be sent againfollowed by seven additional instances of TS, and so on. This sequencecan be repeated according to a particular predefined frequency. In theexample of FIG. 8, the EIEOS can reappear on the lanes approximatelyonce every one thousand UIs (˜1 KUI) followed by the remainder of theDetect supersequence 805. A receiver can monitor lanes for the presenceof a repeating Detect supersequence 805 and upon validating thesupersequence 705 can conclude that a remote agent is present, has beenadded (e.g., hot plugged) on the lanes, has awoke, or is reinitializing,etc.

In another example, another supersequence 810 can be defined to indicatea polling, configuration, or loopback condition or state. As with theexample Detect supersequence 805, lanes of a link can be monitored by areceiver for such a Poll/Config/Loop supersequence 810 to identify apolling state, configuration state, or loopback state or condition. Inone example, a Poll/Config/Loop supersequence 810 can begin with anEIEOS followed by a predefined number of repeated instances of a TS. Forinstance, in one example the EIEOS can be followed by thirty-one (31)instances of TS with the EIEOS repeating approximately every fourthousand UI (e.g., ˜4 KUI).

Further, in another example, a partial width transmitting state (PWTS)exit supersequence 815 can be defined. In one example, a PWTS exitsupersequence can include an initial EIEOS to repeat to pre-conditionlanes in advance of the sending of the first full sequence in thesupersequence. For instance, the sequence to be repeated insupersequence 815 can begin with an EIEOS (to repeat approximately onceevery 1 KUI). Further, fast training sequences (FTS) can be utilized inlieu of other training sequences (TS), the FTS configured to assist inquicker bit lock, byte lock, and deskewing. In some implementations, anFTS can be unscrambled to further assist in bringing idle lanes back toactive as quickly and non-disruptively as possible. As with othersupersequences preceding an entry into a link transmitting state, thesupersequence 815 can be interrupted and ended through the sending of astart of data sequence (SDS). Further, a partial FTS (FTSp) can be sentto assist in synchronizing the new lanes to the active lanes, such as byallowing bits to be subtracted (or added) to the FTSp, among otherexamples.

Supersequences, such as Detect supersequence 705 and Poll/Config/Loopsupersequence 710, etc. can potentially be sent substantially throughoutthe initialization or re-initialization of a link. A receiver, uponreceiving and detecting a particular supersequence can, in someinstances, respond by echoing the same supersequence to the transmitterover the lanes. The receiving and validation of a particularsupersequence by transmitter and receiver can serve as a handshake toacknowledge a state or condition communicated through the supersequence.For instance, such a handshake (e.g., utilizing a Detect supersequence705) can be used to identify reinitialization of a link. In anotherexample, such a handshake can be utilized to indicate the end of anelectrical reset or low power state, resulting in corresponding lanesbeing brought back up, among other examples. The end of the electricalreset can be identified, for instance, from a handshake betweentransmitter and receiver each transmitting a Detect supersequence 705.

In another example, lanes can be monitored for supersequences and usethe supersequences in connection with the screening of lanes for detect,wake, state exits and entries, among other events. The predefined andpredictable nature and form of supersequences can be further used toperform such initialization tasks as bit lock, byte lock, debouncing,descrambling, deskewing, adaptation, latency fixing, negotiated delays,and other potential uses. Indeed, lanes can be substantiallycontinuously monitored for such events to quicken the ability of thesystem to react to and process such conditions.

FIG. 10 represents an example training sequence (TS) in accordance withone example. In FIG. 10, a training sequence 1005 can include a header1010 and various fields that can be used to communicate information inconnection with initialization of a link. For instance, in one example,fields for target latency 1015, state 1020, lane pair number 1025, lanemapping 1028 among other fields can be included. For instance, ascrambler synchronization field 1030 can additionally be provided toassist, among other functions, in synchronizing linear feedback shiftregisters (LFSR) at a device to allow descrambling of TS fields. Otherreserved fields (e.g., 1055, 1060) can also be included in a trainingsequence (e.g., 1005).

A TS header 1010 can include additional fields that can be used tocommunicate training sequence type (e.g., from which initializationstate can be determined or inferred) 1035, ACK/NAK fields 1040 (e.g.,for use in handshaking), lane number fields 1045, and other fields,including reserved fields. In some implementations, portions of a TS canbe scrambled, for instance, by a random or pseudo-random binary sequence(PRBS). In one examples, the TS header 1010 can be preserved ascleartext while the remainder (or body (e.g., 1050)) of the TS isscrambled, for instance, by XORing those portions of the TS with a PRBS,among other examples.

In one implementation, a TS can be sixteen (16) bytes in length and theTS header can occupy the first byte (i.e., byte 0) of the TS. The TSpayload can be scrambled and occupy the remaining fifteen bytes. In oneexample implementation, a TS tail or suffix can include the last fewbytes of the TS. For instance, in one example, a scramblingsynchronization field 1030 can occupy at least three bytes of the TS,for instance bytes 6-8 of the TS. The tail bits of the TS (e.g., bytes9-15), in this particular implementation, can be maintained as reservedbits (e.g., 1055). Bits in bytes 6-15 can all be set to 0.

In some implementations, HPI can supports use of a TS header (e.g.,1010) can be utilized instead of or in addition to a TS payload for keyinitialization parameters. In some implementations, TS payload may beused to exchange initialization parameters like ACKs and lane numbers.DC levels for communicating lane polarity may also be used. However, insome implementations, HPI can implement DC-balanced codes in the TSheader (e.g., 1010) for key parameters. For instance, in instances wherea TS header is unscrambled, available TS header codes can be defined sothat the number of “1”s substantially equal the number “0”s appearing inthe TS header fields (e.g., 1035, 1040, 1045). DC balance can berealized throughout the remainder of the TS (e.g., the TS payload) byscrambling bits of the TS payload by XORing the bits against a random orpseudorandom binary sequence.

In one example implementation, a PRBS sequence can be utilized with atleast 23 bits (PRBS23). The PRBS can be generated according to aparticular selected polynomial. In one example, the PRBS can begenerated by a similar bit size, self-seeded storage element, such as alinear feedback shift register (LFSR). The LFSR can be a 23-bitFibonacci LFSR capable of generating a PRBS sequence of over 8 Mb inlength. The PRBS can repeat following the end of the sequence. In someimplementations, the entirety of the PRBS23 sequence can be used in thescrambling of training sequences included in supersequences used, forinstance, in initialization of the link in HPI.

While the full length of a PRBS sequence can be used, in someimplementations, HPI can support allowing the use of varying lengths ofthe available PRBS sequence (e.g., the use of only a portion of thePRBS23 sequence). In some examples, a controller of a device can specifythat only a portion of the full length of a PRBS sequence be utilized.This can be desirable, for instance, in testing applications whererepeatability of bit sequences is desired, among potentially otherapplications. A software-based controller can specifying varying lengthsof the PRBS to be applied. For instance, BIOS of a device can specifythe PRBS length to be applied on the link. In some implementations, useof the full length of the PRBS sequence can be the default setting, forinstance, so as to maximize the benefits of the lengthy PRBS sequence.

Lane traffic in a transmitting link state (TLS) and training sequencescan be scrambled with a PRBS of a particular minimum length (e.g., 23bits). The starting seed applied to a stream can be varied between thelanes to enhance the electrical benefits of the PRBS on the link. In oneexample implementations, the PRBS can be generated by a 23 bit FibonacciLFSR implementing a 6-tap generator polynomial, such as,(x²³+x²¹+x¹⁶+x⁸+x⁵+x²+1).

The starting (on scrambler/descrambler initialization) seed values forlane number modulo 8 may be any value, for instance, 8 hexadecimalvalues where each one is associated with 2 or 3 of the lanes in a link.Use of such seeds can result in rotating (or staggering) of the PRBSbetween the lanes. The number of LFSRs can be reduced by using theproperty that even lane PRBS can be derived from an XOR of PRBS of oddlanes. The EIEOS and header of the training sequences are not scrambled.The entry point of a supersequence on each lane can be initiated (e.g.,where the transmitter starts driving) at a different point on each lane.This can enable the lanes to be turned on in a staggered manner in orderto reduce noise in the power delivery system. Indeed, each lane can haveits own instance of an LFSR. The staggering times can vary by the numberof lanes being turned on and may be implementation dependent duringinitialization. These can be specified in the timing diagrams and timerprofiles for partial transmitting width state exit. Further, fasttraining sequences (FTS) (also discussed below) can also be rotated bylane.

In some instances, scrambling can reduce power supply noise attransmitter and provide a richer frequency spectrum at receiver. Thescrambler can be initialized by the first EIEOS transmitted. Thedescrambler can be synchronized to the scrambler, for instance, throughself-seeding. For instance, the received 23 bit pattern can be embeddedin a field of the TS as a seed. In one example, the 23 bit seed can beidentified from the scrambling of the bits of the scramblingsynchronization field (e.g., 1050). The receiver can utilize the seedvalue to identify the specific location of the PRBS used to scramble thereceived TS. For instance, a receiver can identify the seed and load theseed into its own LFSR to synchronize to the PRBS used by thetransmitter. In some instances, a receiver may read multiple scramblingsynchronization field or multiple TSes in a supersequence in order toseed its own LFSR. Upon detecting and synching to the PRBS of thetransmitter however, a receiver can descramble the remainder of the TSesas well as all subsequent TS sent in supersequences duringinitialization of the link, among other examples.

Supersequences can be used to facilitate bit lock and synchronization ona lane. As discussed above, at least a portion of the supersequences canbe scrambled. Returning to the discussion of FIG. 8, a detectsupersequence can be used by a receiver to detect, or lock, the bit andbyte edges of the received bit stream and identify which bytes are beingsent in the supersequence. For instance, the EIEOS and TS header can beleft unscrambled to assist the receiver in more quickly locking to thesupersequence. Additionally, the supersequence can be defined to allowthe EIEOS (and beginning of the supersequence) to repeat at a relativelyshort frequency (e.g., to more quickly allow the receiver another chanceto detect the EIEOS in the event that the first EIEOS was not accuratelydetected). For instance, in one example, a supersequence can be definedto repeat every 1 KUI or shorter. Such supersequences can further allowmore randomized transitions during initialization, as well assimplifying TS lock, latency fixing, and other actions.

Additionally, leaving the EIEOS and TS header unscrambled can allow bytelock to occur and permit the receiver to be able to identify thelocation of subsequent bytes and symbols (including scrambled TSsymbols). For instance, the edge of the unscrambled TS header can beidentified and thereby also the start of scrambling synchronizationfield (e.g., 1050) (e.g., by simply counting the number of bytes fromthe edge of the TS header to the symbol). Upon detecting the PRBS seedin the scrambling synchronization field, the receiver will know thefollowing PRBS pattern values and will also be able to predict thevalues of subsequent scrambling synchronization field (e.g., 1050)values. Accordingly, the receiver, upon locking to the PRBS can furtherutilize the scrambling synchronization field (e.g., 1050) values tofacilitate other configuration tasks such as adaptation, deskew, andother tasks.

On multi-lane links, symbols can be sent simultaneously on all lanes bya transmitter, however, link-to-link skew can manifest with some symbolsnot arriving at the receiver at the same time. Sources of skew caninclude, for instance, chip differential drivers and receivers, printedwiring board impedance variations, lane wire length mismatches, amongother examples. In one embodiment, HPI provides advanced logic to deskewlanes. As an example, the TS boundary after TS lock can be used todeskew the lanes. For instance, TS lock can be used to detect skew(e.g., that a TS is arriving on one lane later than another TS onanother one of the link's lanes). An EIEOS can also be used to detectskew. In addition, using the predictability of a synched PRBS pattern,some implementations of HPI may deskew by comparing lane PRBS patternsin the LFSR during specific points in the payload. Further, in someinstances, scrambling of training sequences can be re-initialized anddeskew can be performed by doing a table lookup of PRBS values duringthe re-seeding of the training sequence, among other examples. Deskewcan be useful in testchips, for instance, which may lack ability todetect TS or state machines to manage the deskew, among other examples.

Upon detecting skew, HPI logic (e.g., provided through asoftware-supported controller) can identify the skew on each lanerelative to other lanes in a link and adjust the lanes to attempt toeliminate the skew. For instance, “faster” lanes can be artificiallyslowed based on the delay detected in a lane-to-lane skew to accommodatethe symbols of the “slower” lanes arriving substantially simultaneouslywith the delayer “faster” lanes, among other examples.

In the case of adaptation, electrical characteristics of a lane can beadjusted between a transmitter and receiver based, for instance, onsample data transmitted between the transmitter and receiver. Forinstance, receiver adaptation can include the transmitter sending a datapattern to the receiver with logic at the receiver adjusting electricalcharacteristics at the receiver to adapt the lane for the link.Transmitter adaptation can involve the transmitter sending sample datato the receiver and the receiver sending feedback to the transmitterthat can be used by the transmitter to make adjustments at thetransmitter to adapt the lane. The receiver can continue to sendfeedback to the transmitter based on the adjustments made at thetransmitter.

In one example, adaptation sample data can be embodied through scrambledTS data. As one example, a fixed UI pattern may be utilized to scramblewith a bypass to an adaptation state. But by scrambling TS with PRBS23,receiver adaptation may be performed without the bypass. In addition,offset and other errors may be reduced during clock recovery andsampling. The randomness provided through the a long PRBS sequence(e.g., PRBS23) can prove an effective sample stream for adaptation.Further, in some implementations, a lane can be set to operate in slowmode to assist the logic in analyzing and adapting to sample datareceived on the lane. Upon approving the characteristics of the lanethrough adaptation, the adapted characteristics can be set and appliedto the initialization of the link.

Once the link has been successfully calibrated and configured,initialization can end and transition to the transmitting link state(TLS) in which flits begin to be transmitted. In some implementations ofHPI, transitions to TLS can be based on planetary alignment on thesystem. For instance, a planetary alignment signal can indicate anopportunity to transition to TLS. Rather than transitioning at an edgeof a supersequence, EIEOS, or TLS, some implementations of HPI canutilize a start of data sequence (SDS) symbol sent in accordance withthe planetary alignment to end initialization and transition to TLS. Inone example, an SDS can be sent anywhere in an initialization bitstream. Accordingly, a receiver can continuously scan received bits forthe SDS to hasten ending of the initialization in accordance with aplanetary alignment.

In one example, an example EIEOS can emulate a low frequency clocksignal, such as a repeating FF00 signal. An example SDS can include arepeating F0 signal in some implementations. Accordingly, in suchinstances, detecting an SDS sent in the middle of an EIEOS can berelatively simple to identify, as the risk of aliasing within the EIEOScan be minimal. Scrambling of TS payloads, however, and the resultingrandomness of the TS data can introduce the risk of aliasing of someforms of an SDS. In some implementations, a PRBS can be generated thatwill never alias an SDS over any particular span of a number of bits.Further, a tail or suffix can be provided on a TS, such as using thelast bytes of the TS to cause the PRBS to be XOR 0 values in the suffixand effectively present the PRBS in cleartext at the end of the TS. Ifthe suffix is sufficiently long, the PRBS values reflected in thescrambled suffix can make it virtually impossible for an SDS to bealiased in the scrambled payload of a TS. For instance, in one example,the SDS can be defined as ten consecutive bytes of the value F0 (i.e.,1111000011110000 . . . ). Further, a suffix of seven reserved bytes canbe provided in a TS immediately following three bytes of a scramblingsynchronization field (e.g., 1050), as shown for instance in the exampleof FIG. 10. As a result, the length of the zeroed TS suffix (e.g., tentotal bytes) can correspond to the SDS value (e.g., ten bytes of F0)chosen which has been selected as not appear within a selectedscrambling PRBS (e.g., PRBS23), among other examples. For instance,based on the polynomial utilized in an implementation of PRBS23 (oranother PRBS) no ten byte sequence in PRBS23 will ever equal theselected SDS value, among other examples.

In some implementations, on exit from a Configuration state to TLS, thetransmit and receive LFSRs can be re-initialized by the SDS exchangedbetween transmitter and receiver. For instance, in eight starting PRBSseeds can be applied to lanes 0 . . . 7, 12 . . . 19, and 8 . . . 11(e.g., first four only) respectively. Further, lane reversal of a linkand polarity inversion of a lane can also be determined, for instance,by comparing the unscrambled first byte of the TS (e.g., the TS header)after the EIEOS to a set of possible values, among other examples.

In the case of debouncing, transients can be introduced on lanes as aresult of a variety of conditions. For instance, the addition orpowering-on of a device can introduce transients onto the lane.Additionally, voltage irregularities can be presented on a lane becauseof poor lane quality or electrical failure. In some cases “bouncing” ona lane can produce false positives, such as a false EIEOS. However, insome implementations, while supersequences can be begin with an EIEOS,defined supersequences can further include additional sequences of dataas well as a defined frequency at which the EIEOS will be repeated. As aresult, even where a false EIEOS appears on a lane, a logic analyzer atthe receiver can determine that the EIEOS is a false positive byvalidating data that succeeds the false EIEOS. For instance, if expectedTS or other data does not follow the EIEOS or the EIEOS does not repeatwithin a particular one of the predefined frequencies of one of thepredefined supersequences, the receiver logic analyzer can failvalidation of the received EIEOS. As bouncing can occur at start up as adevice is added to a line, false negatives can also result. Forinstance, upon being added to a set of lanes, a device can begin sendinga Detect supersequence 705 to alert the other side of the link of itspresence and begin initialization of the link. However, transientsintroduced on the lanes may corrupt the initial EIEOS, TS instances, andother data of the supersequence. However, a logic analyzer on thereceiving device can continue to monitor the lanes and identify the nextEIEOS sent by the new device in the repeating Detect supersequence 705,among other examples.

In one example, a transmitting device can attempt to enter a particularstate. For instance, the transmitting device can attempt to activate thelink and enter an initialization state. In another example, thetransmitting device can attempt to exit a low power state, such as an L1state, among other examples. In some instances of an L1 state, the L1state can serve as a power savings, idle, or standby state. Indeed, insome examples, main power supplies may remain active in the L1 state. Inexiting an L1 state, a first device can send a supersequence associatedwith transitioning from the L1 state to a particular other state, suchas an L0 transmitting link state (TLS). The supersequence, as in otherexamples, can be a repeating sequence of an EOS followed by apredetermined number of TSes such that the EOS is repeated at aparticular predefined frequency. In one examples, a Detect supersequencecan be used to exit the L1 or other low power state. A receiving devicecan receive and validate the data, identifying the supersequence, andthe receiving device can complete the handshake with the transmittingdevice by sending the supersequence back to the transmitting device.

With both the transmitting and receiving devices receiving the samesupersequence, each device can further perform additional initializationtasks utilizing the supersequences. For instance, each device canperform debouncing, bit lock, byte lock, descrambling, and deskewingutilizing the supersequences. Additional initialization information canbe communicated through the headers and payloads of the TSes included inthe supersequences. When the link is initialized, a start data send(SDS) sequence can be sent, in some cases, interrupting thesupersequence (e.g., sent in the middle of a TS or EIEOS) and therespective devices on either side of the link can prepare for thesynchronized entry into TLS. In TLS, or an “L0” state, supersequencescan be ended and flits can be transmitted utilizing the Link layer ofthe protocol stack.

While in TLS, the Physical layer may still be provided limitedopportunities to perform control tasks. For instance, bit errors andother errors may be identified on one or more lanes during an L0 state.In one implementation, a control state L0c can be provided. The L0cstate can be provided as a periodic window within the TLS to allowPhysical layer control messages to be sent between streams of flits sentthrough the Link layer. For instance, as represented in the exampleillustrated in FIG. 11, an L0 state can be subdivided into L0cintervals. Each L0c interval can begin with a L0c state or window (e.g.,1105) in which Physical layer control codes and other data can be sent.The remainder (e.g., 1110) of the L0c interval can be dedicated to thesending of flits. The length of the L0c interval and L0c state in eachinterval can be programmatically defined, for instance by BIOS of one ormore devices or another software-based controller, among other examples.The L0c state can be exponentially shorter than the remainder of an L0cinterval. For instance, in one example, the L0c can be 8 UI while theremainder of the L0c interval is on the order of 4 KUI, among otherexamples. This can allow windows in which relatively short, predefinedmessages can be sent without substantially disrupting or wasting linkdata bandwidth.

L0c state message can communicate a variety of conditions at thePhysical layer level. In one example, one device can initiate a reset ofthe link or a lane, for instance, based on bit errors or other errors inexcess of a particular threshold amount. Such errors can also becommunicated in L0c windows (such as preceding L0c windows). The L0cstate can also be leveraged to realize other in-band signaling, such assignaling for use in aiding or triggering transitions between other linkstates. In one example, L0c messages can be utilized to transition alink from an active L0 state to a standby or low power state, such as anL1 state. As shown in the simplified flow diagram of FIG. 12, aparticular L0c state can be used to communicate a L1 entry request(e.g., 1210). Further flits (e.g., 1220, 1230) can be sent while thedevice (or agent on the device) waits for an acknowledgement of therequest 1210. The other device on the link can send the acknowledgement(e.g., 1240). In some examples, the acknowledgement can also be sent ina L0c window. In some instances, the acknowledgement can be sent in thenext L0c window following receipt/sending of the L1 request 1210. Timerscan be employed to synchronize the L0c intervals at each device and therequesting device can identify the acknowledgement 1240 as anacknowledgement of the request 1210 (e.g., rather than an independent L1entry request) based on an identification that the acknowledgement 1240was sent at the next L0c window, among other examples. In someinstances, an acknowledgement can be communicated through an L0c codedistinct from that used in the L1 entry request 1210. In otherinstances, the acknowledgement 1240 can include the echoing of the L1entry request code used in request 1210, among other examples. Further,in alternative examples, a non-acknowledge signal or NAK can becommunicated in the L0c window.

In addition (or as an alternate) to handshaking using L0c codes,supersequences, such as Detect supersequence, can be sent in connectionwith resetting and re-initializing the link. Further handshaking canoccur between the devices as the supersequences sent by a first deviceand echoed by the second, receiving device. Supersequences can be used,as described above, to assist in the reinitialization of the linkincluding debouncing, bit lock, byte lock, descrambling, and deskewingthe lanes of the link. Further, the devices can utilize the timer (e.g.,embodying the L0c interval) to synchronize entry of the devices and thelink into the requested L1 state. For instance, receipt of theacknowledgement 1240 can indicate to the devices that they are tomutually enter (or begin entering) the L1 state at the end of the L0cinterval corresponding to the L0c window in which the acknowledgementwas sent, among other examples. For instance, data sent in an L0c windowincluded in or otherwise associated with the acknowledgement 1240 canindicate the time at which the devices are to enter the L1 state, amongother potential examples. Additional flits (e.g., 1250), in someinstances, can be sent while the devices await the timeout correspondingto the transition into the L1 state.

In some implementations of HPI, links can be established upon any numberof two or more lanes. Further, a link can be initialized at a firstnumber of lanes and later transition to a partial width state such thatonly a portion of the number of lanes is used. The partial width statecan be designated as a lower power state, such as a L0p state. In oneexample, an L0c state can be used to transition from a L0 state wherethe first number of lanes is active to an L0p state where a lessernumber of lanes are to be active. For instance, as shown in the exampleof FIG. 9, an link can be active at a first width 910. In someinstances, the first width can be the full width (e.g., at L0). In otherinstances, the link can transition from a first L0p state utilizing afirst number of lanes to another L0p using a different number (or set)of lanes, among other examples. During a L0c window of the lanes in thefirst width, a L0p entry code 920 can be transmitted. The L0p entryrequest 920 can identify what new width should be applied. In someinstances, the new link width can be predetermined and identified simplyfrom the receipt of the L0p request 920. Additionally, the particularlanes to be dropped in the partial width state can also be specified orotherwise identified or preconfigured in connection with the L0p request920, among other examples.

Continuing with the example of FIG. 9, flits or other data can continueto be sent across the full width of lanes while the link awaitstransition into the L0p state. For instance, a duration t can bespecified by synchronized timers at the devices connected through thelink to synchronize entry into the L0p state. In one example, theduration t can correspond to a remainder of a L0c interval correspondingto the request 920. At the end of the interval a portion of the laneswill remain active while another portion of the lanes are put into aninactive or idle state. The link will then operate at the new width(e.g., 940), at least until an L0p exit request or other link widthtransition request is received, among other examples.

HPI can utilize one or more power control units (PCU) to assist intiming transitions between an L0 state and lower power states, such asL0p and L1. Further, HPI can support master-slave, master-master andother architectures. For instance, a PCU may be present on or otherwiseassociated with only one of the devices connected on a link and thedevice having the PCU can be considered the master. Master-masterconfigurations can be realized, for instance, when both devices have anassociated PCU which can prompt a link state transition. Someimplementations can specify a minimum stay for a particular low powerstate, such as L0p or L1, for example, to attempt minimize transitionsbetween states and attempt to maximize power savings within an enteredlow power state, among other examples.

Exiting from a partial width low power state can be adapted to takeplace efficiently and quickly so as to minimize the impact andinterruption of the active lanes. In some implementations, L0c windowsand codes can also be used to trigger an exit from an L0p or other stateto reactive idle lanes. Turning, for instance, to the examples of FIG.13, a simplified flow diagram is shown illustrating an example exit froman L0p state. In the particular example of FIG. 13, flit data (e.g.,1305) can be sent when an L0c window 1310 is encountered in which a L0entry (or L0p exit) request is included. Additional flits 1315 can besent prior to the point at which the L0p exit is to occur. As in otherexamples, an L0c code 1310 can include identification of or implicitlyidentify a time at which a state transition is to begin/end as well asparticular events of the state transition. Flits (e.g., 1315) cancontinue to be sent to maximize data transfer while the devicesanticipate to enter the state transition.

In one example, an EIEOS 1320 (or other data such another EOS) can besent on the inactive lanes to begin conditioning the lanes. In someinstances, such inactive lanes (e.g., lanes “n+1” through “z”) may havebeen inactive for some time and waking the lanes can introduceelectrical transients and other instability. Accordingly, the EIEOS1320, as well as partial width supersequences sent in connection withthe exit from the L0p state can be used to debounce the lanes as theyawake. Further, in some instances, transients on the waking lanes (e.g.,lanes “n+1” through “z”) can potentially affect the active lanes (e.g.,lanes “0” through “n”). To prevent against irregularities stemming fromthe re-awakening of the idle lanes negatively impacting the activelanes, the active lanes can be synchronized to send null flits (e.g., at1325) at or immediately prior to the initial signals (e.g., 1320) beingsent over the waking lanes.

In some implementations, re-initialization of the idle lanes can betimed to begin, such as at the conclusion of a corresponding L0cinterval. In other instances, an alternative time can be employed tostart re-initialization early. In such instances, a transmitter of theL0p exit request can cause the idle lanes to be pre-conditioned, forinstance, through the sending of one or more single EIEOSes. The sendingof such conditioning signals can be coordinated with the active lanes sothat null flits are sent momentarily on the active lanes to coincidewith the initial sending of the EIEOS and protect the active lanes frominterfering transients at the start-up of the idle lanes, among otherexamples. For instance, Link layer buffers can be alternatively oradditionally used to protect against bit loss resulting from suchtransients in reawaking idle lanes, among other techniques.

Further, in some implementations, following the sending of an initialEIEOS (or supersequence) a partial width state exit supersequence (e.g.,1330) can be sent. At least a portion of the supersequence can berepeated on the active lanes (e.g., at 1325). Further, the devicereceiving supersequence 1325 can echo the supersequence to handshake andacknowledge the state transition, among other examples. The sending ofthe supersequence (e.g., 1330) can be further used to perform bit lock,byte lock, debouncing, descrambling, and deskew. For instance, thereactivated lanes can be deskewed against the active lanes. In someinstances, the initial configurations determined for the idle lanes inthe original initialization of the link can be accessed and applied,although, in other instances, the idle character of the lanes can resultin changes to the skew and other lane characteristics resulting in theeffective re-initialization of the idle lanes.

Returning briefly to FIG. 8, one example is represented of sequencesthat can be sent in connection with a partial width transmitting stateexit (e.g., a transition from a L0p state to an L0 state). As lanes areto remain active before and after such a transition, a premium can beplaced on accelerating the state transition so as to provide minimaldisruption to the active lanes. In one example, a partial supersequencecan be sent (e.g., as in 1320 of FIG. 13) without the subsequenttraining sequences to expedite debouncing. For instance, transients canbe attempted to be resolved within the first EIEOS without waitinganother 1 KUI for a second complete EIEOS to be sent to begin bit lock,byte lock, deskew, and other tasks. Further the full partial widthtransmitting state exit supersequence can include a repeating sequenceof an EOS (e.g., EIEOS) followed by a predefined number of trainingsequences. In the example of FIG. 8, an EIEOS can be sent followed by aseries of training sequence (e.g., seven consecutive trainingsequences). In one implementation, rather than sending a full trainingsequence (such as a “TS” used in supersequences 805, 810) an abbreviated“fast training sequence” (or FTS) can be sent. The symbols of the FTScan be optimized to assist with the quick bit and byte lock anddeskewing of the reactivated lanes, among other features. In oneexample, the FTS can be less than 150 UI in length (e.g., 128 UI).Further, FTSes can be left unscrambled so as to further assist in quickrecovery of the idle lanes.

As shown in the third row of element 815, a partial width transmittingstate exit supersequence can also be interrupted by an SDS once acontroller has determined that the reactivated lanes have beeneffectively initialized. In one example, a partial FTS (or FTSp) canfollow the SDS to assist with synchronizing the reactivated lane withthe active lanes (e.g., once bit lock, byte lock, and deskewing havebeen completed). For instance, the bit length of the FTSp can be set tocorrespond to a clean flit boundary for the final width between thereactivated lanes and the active lanes. To facilitate fastsynchronization of the lane, bits can be added or subtracted from a laneat the receiver prior or during the FTSp to account for the skew.Alternatively, or in addition, bits can also be added or subtracted tothe lane at the receiver prior or during the SDS to facilitate deskewingof a newly activated lane, among other examples.

Returning to the discussion of FIG. 13, transmission of data flits canbe resumed on active lanes (e.g., lanes 0 through n) (e.g., at 1325)while initialization of the waking lanes completes in some examples. Forinstance, once debouncing has been resolved, link layer transmissionscan resume. In some instances, flit transmission can be momentarilyinterrupted (e.g., at 1340) in connection with the final reactivationand synchronization of the previously idle lanes (e.g., lanes n+1through z) (e.g., in connection with the sending of an FTSp 1335). Withthe lanes restored, flit data 1345 can then resume on all lanes.

In some implementations, an HPI link is capable of operating at multiplespeeds facilitated by the embedded clock. For instance, a slow mode canbe defined. In some instances, the slow mode can be used to assist infacilitating initialization of a link. Calibration of the link caninvolve software-based controllers providing logic for setting variouscalibrated characteristics of the link including which lanes the link isto use, the configuration of the lanes, the operational speed of thelink, synchronization of the lanes and agents, deskew, target latency,among other potential characteristics. Such software-based tools canmake use of external control points to add data to Physical layerregisters to control various aspects of the Physical layer facilitiesand logic.

Operational speed of a link can be considerably faster than theeffective operation speed of software-based controllers utilized ininitialization of the link. A slow mode can be used to allow use of suchsoftware-based controllers, such as during initialization orre-initialization of the link among other instances. Slow mode can beapplied on lanes connecting a receiver and transmitter, for instance,when a link is turned on, initialized, reset, etc. to assist infacilitating calibration of the link.

In one embodiment, the clock can be embedded in the data so there are noseparate clock lanes. The flits sent over the lanes can be scrambled tofacilitate clock recovery. The receiver clock recovery unit, as oneexample, can deliver sampling clocks to a receiver (i.e. the receiverrecovers clock from the data and uses it to sample the incoming data).Receivers in some implementations continuously adapt to an incoming bitstream. By embedding the clock, pinout can be potentially reduced.However, embedding the clock in the in-band data can alter the manner inwhich in-band reset is approached. In one embodiment, a blocking linkstate (BLS) can be utilized after initialization. Also, electricalordered set supersequences may be utilized during initialization tofacilitate the reset (e.g., as described above), among otherconsiderations. The embedded clock can be common between the devices ona link and the common operational clock can be set during calibrationand configuration of the link. For instance, HPI links can reference acommon clock with drift buffers. Such implementation can realize lowerlatency than elastic buffers used in non-common reference clocks, amongother potential advantages. Further, the reference clock distributionsegments may be matched to within specified limits.

As noted above, an HPI link can be capable of operating at multiplespeeds including a “slow mode” for default power-up, initialization,etc. The operational (or “fast”) speed or mode of each device can bestatically set by BIOS. The common clock on the link can be configuredbased on the respective operational speeds of each device on either sideof the link. For instance, the link speed can be based on the slower ofthe two device operations speeds, among other examples. Any operationalspeed change may be accompanied by a warm or cold reset.

In some examples, on power-on, the link initializes to Slow Mode withtransfer rate of, for example, 100 MT/s. Software then sets up the twosides for operational speed of the link and begins the initialization.In other instances, a sideband mechanism can be utilized to set up alink including the common clock on the link, for instance, in theabsence or unavailability of a slow mode.

A slow mode initialization phase, in one embodiment, can use the sameencoding, scrambling, training sequences (TS), states, etc. asoperational speed but with potentially fewer features (e.g., noelectrical parameter setup, no adaptation, etc.). Slow mode operationphase can also potentially use the same encoding, scrambling etc.(although other implementations may not) but may have fewer states andfeatures compared to operational speed (e.g., no low power states).

Further, slow mode can be implemented using the native phase lock loop(PLL) clock frequency of the device. For instance, HPI can support anemulated slow mode without changing PLL clock frequency. While somedesigns may use separate PLLs for slow and fast speed, in someimplementations of HPI emulated slow mode can be achieved by allowingthe PLL clock to runs at the same fast operational speed during slowmode. For instance, a transmitter can emulate a slower clock signal byrepeating bits multiple times so as to emulate a slow high clock signaland then a slow low clock signal. The receiver can then oversample thereceived signal to locate edges emulated by the repeating bits andidentify the bit. In such implementations, ports sharing a PLL maycoexist at slow and fast speeds.

A common slow mode speed can be initialized between two devices. Forinstance, the two devices on a link may have different fast operationalspeeds. A common slow mode speed can be configured, for instance, duringa discovery phase or state on the link. In one example, an emulationmultiple can be set as an integer (or non-integer) ratio of fast speedto slow speed, and the different fast speeds can be down-converted towork with the same slow speed. For instance, two device agents whichsupport at least one common frequency may be hot attached irrespectiveof the speed at which the host port is running. Software discovery maythen use the slow mode link to identify and setup the most optimal linkoperational speeds. Where the multiple is an integer ratio of fast speedto slow speed, different fast speeds may work with the same slow speed,which may be used during the discovery phase (e.g., of hot attach).

In some implementations of HPI, adaptation of lanes on a link can besupported. The Physical layer can support both receiver adaptation andtransmitter, or sender, adaptation. With receiver adaptation, thetransmitter on a lane can send sample data to the receiver which thereceiver logic can process to identify shortcomings in the electricalcharacteristics of the lane and quality of the signal. The receiver canthen make adjustments to the calibration of the lane to optimize thelane based on the analysis of the received sample data. In the case oftransmitter adaptation, the receiver can again receive sample data anddevelop metrics describing the quality of the lane but in this casecommunicate the metrics to the transmitter (e.g., using a backchannel,such as a software, hardware, embedded, sideband or other channel) toallow the transmitter to make adjustments to the lane based on thefeedback. Receiver adaptation can be initiated at the start of thePolling state using the Polling supersequence sent from the remotetransmitter. Similarly, transmitter adaptation can be done by repeatingthe following for each transmitter parameters. Both agents can enterLoopback Pattern state as masters and transmit specified pattern. Bothreceivers can measure the metric (e.g. BER) for that particulartransmitter setting at a remote agent. Both agents can go to LoopbackMarker state and then Reset and use backchannels (slow mode TLS orsideband) to exchange metrics. Based on these metrics, the nexttransmitter setting can be identified. Eventually the optimaltransmitter setting can be identified and saved for subsequent use.

In adaptation, a transmitter of an agent can transmit to a remotereceiver a random, or pseudo random pattern. In some instances,scrambled supersequences can be used as the pattern. Logic at thereceiver can determine characteristics of one or more lanes of the linkand generate metric data describing such characteristics. In the case ofreceiver adaptation, the receiver can attempt to determine optimalconfigurations for a lane based on the metrics and apply theseconfigurations at the receiver. In the case of transmitter adaptation,the receiver can communicate metrics to the transmitter for use by thetransmitter agent to configure and adapt the lane based on the metric.In either instance, in some implementations, hardware or software can beutilized to assess different transmitter settings in algorithmic orderto determine the optimal settings.

Receiver adaptation can be initiated at the start of the Polling stateusing the Polling supersequence sent from the remote transmitter.Similarly, transmitter adaptation can be done by repeating the followingfor each transmitter parameters. Both agents can enter Loopback Patternstate as masters and transmit specified pattern. Further, both receiverscan measure the metric (e.g. BER) for that particular transmittersetting at a remote agent. Both agents can go to Loopback Marker stateand then Reset and use backchannels (slow mode TLS or sideband) toexchange metrics. Based on these metrics, the next transmitter settingcan be identified. Eventually the optimal transmitter setting can beidentified and saved for subsequent use.

In some implementations, a timer can be used during adaptation. At theconclusion of a predefined timer value, adaptation can be ended, underthe assumption that the time value was sufficiently long to permit thetransmitter and receiver to have concluded adaptation tasks andsuccessfully adapt the lane. In other implementations, an alternateapproach can be utilized to improve the efficiency of adaptation of alink. For instance, in one example, a handshake can be employed totailor the time spent in adaptation to the time actually used tocomplete adaptation. In one example, a receiver at a first agentresponsible for generating metrics from a sample sent by thetransmitter, can send a signal notifying the transmitter that thereceiver approves the configuration of the link (or lane(s)) whetheradaptation was performed by the receiver or transmitter. Upon receivingthe signal, the transmitter can complete the handshake by sending anacknowledgement signal. In some instances, the acknowledgement canindicate similar approval of the link configuration at the transmitteragent, among other examples.

Metric information and other feedback can be communicated from areceiver agent to a transmitter agent in connection with adaptation of alink through a variety of mechanisms. The transmitter, in the case oftransmitter adaptation, can identify changes that can be made to one ormore attributes of the lane so as to improve the characteristics of thelane. The transmitter can make these changes and send additional sampledata on the lanes reflecting these changes. The receiver can thenprovide additional metric data or feedback, in some instances, to reportthe quality of the changes. In one example, a receiver can providemetric information through a backchannel. In one example, such abackchannel can be implemented as a software-based backchannel bysending the link (or one or more lanes) into slow mode allowing softwaretools to analyze the quality of a sample received from the transmitter.The software tool can cause metric information or a configurationrecommendation to be communicated to the transmitter agent. This can beaccomplished through an in-band communication, software-to-softwaremessage, or other means. In another example, a side band channel can beused (when available on the device(s)) as the backchannel. In stillanother example, a hardware-based channel can be used as thebackchannel, such as by reserving one lane between two agents fortransmission of the sample and reserving a second lane (at least duringan adaptation event) for transmission of the feedback metric data. Instill a further example, an embedded channel can be utilized thatleverages a control or BLS window for the sending of feedback metricdata. The control window can be set to slow mode (e.g., to enableanalysis by software), in some examples, while the control intervalcommunicates the sample at operation speed, among other potentialexamples.

In some instances, adaptation can include the sending of a PRBS (or aPRBS scrambled portion of a supersequence) by the transmitter to thereceiver in a Master-Master loopback state. Both agents on a lane canlock to the PRBS and use the sequence as an reference sequence foradaptation. One or both agents can receive the reference sequence anddetermine whether the reference sequence was reproduced properly at theagent's receiver. One or both agents can then respectively assess thequality of the lane based on a comparison of the received sequence withthe expected reference sequence. For instance, a bit error rate can bedetermined for the lane based on the comparison. Additionally, logic atthe transmitter (or at the receiver) can deliberately inject jitter,noise, or other characteristics to the signal prior to sending duringthe loopback to test the quality of the lane (e.g., whether the signalcan still be understood at the receiver despite the noise), among otherfeatures. The results of such assessments, including a determined biterror rate, can be included in metric data used to adapt the link.

Self tests can be performed through functionality provided in someimplementations of HPI (e.g., Interconnect Built-In Self Test (MIST)).Supersequences can be utilized in such self tests. For instance, atransmitter or master can send a pattern including all or a portion of asupersequence, a PRBS sequence, or other sequence. The length andrepeatability of such sequences can be controlled in some instances,allowing the full length of a particular sequence to be applied in someinstances, while applying only a partial (and repeating) portion of thesequence in other instances. In some examples, a PRBS23 or sequencescrambled using PRBS23 can be utilized in self tests of a link.Additionally, start end points of a sequence can be particularlyselected and used in self tests and other functions. Further, multiplenon-correlated data sequences can be made available through someimplementations of HPI allowing different data sequences to be appliedon adjacent lanes. In one example, multiple non-correlated versions of aPRBS can be provided, such as four or more sequences, among otherexamples

As noted above, loopback can be used in a variety of tasks, includingtesting, adaptation, initialization, etc. Synchronization of two agentsin loopback can be difficult in some instances. For instance, an agentof a receiver may be originating data, such as particular trainingsequences, supersequences, etc. Further, upon entering loopback, thereceiver may splice data it has originated with the data it is toloopback, such as training sequences that it is to loopback. In oneexample, a transmitter or master in loopback can include logic totransition from a lock on TS originated by the receiver agent to lock onlooped-back TS. Such TS locking can present the threat of aliasing andother issues. In one example, a TS, such as the payload of a TS can beformatted to assist in remediating the risk of aliasing or otherwiseconfusing previous TSes with newly looped-back TSes. For instance, inone example, a TS can be provided with a suffix of zeroed data that caninclude bytes used for descrambling as well as other dual-use reservedbytes. Such zeroed bytes can be additionally used to reduce or eliminate(statistically) the risk that the newly looped-back TS will be missedamong data spliced by the receiver and originating from the receiver,among other examples. In loopback, a master can check the integrity ofits patterns and relock after loopback, for instance, through the use ofa NAK-ACK handshake with NAK TS with unchanged payload and handshake(ACK) used for in-band parameter payload. Further, master-masterloopback can also be supported, with TS format being used in TS lock ateach side of a master-master loopback.

In some implementations of HPI, design for test features can beprovided. In one embodiment, HPI includes hooks to enable post-designtest, debug, and validation. An exemplary, non-exhaustive list of suchfeatures is included below. Note that the following features areprovided by way of example, as some may be omitted, and others may beadded, etc.:

Single Step: Single step includes a debug feature where software maystep agents through the initialization states to a link state, such asTLS. A storage element, register, or signal (that is softwareaccessible) may enable this mode. In this mode the agent may set asemaphore on entering a state and perform the state actions. But when anexit condition is reached (including secondary timeouts), the sempahorecan cause a next state transition to not be taken. Here, the actualtransition may occur at the direction of a software-based controller,such as by clearing the semaphore. This potentially allows software toexamine the Physical layer during progress to a transmitting state orLoopback. Note that this may be extended to substrates by setting asubstrate sempahore on entry to a substrate, among other examples. Theagent may remain in a current state as long as a semaphore, such as abit in a register, is set. Transition out of every state may be delayeduntil the hold bit is cleared by an outside agent. State rules definedexit criteria can otherwise be maintained except in cases involvingtime-outs, etc. The secondary timers may be disabled (e.g., ignored).Here, the clearing of the hold bit can be considered a replacementstimulus emulating the secondary timer time-out for single steppingoperation, among other examples. Further, single stepping with theassistance of software can be performed in a manner that supportsintegrity of the forward progress.

Freeze on Initialization Abort: This is a debug feature where the agentdoes not immediately take the transition to a reset state on aninitialization abort, delaying or suspending the transition so thatsoftware-based tools can identify causes for the abort. For instance,software-based tools can be used to probe reasons for an abort whilesupporting integrity of the regress and reinitialization. One or morefields of a register holding one or more bits, such as a controlregister, may control this action. This feature complements single stepby giving software control to state exits due to failure (as single stepdoes in case of normal progress). In one embodiment, by default, aPhysical layer state machine may retry by immediately transitioning to areset state after any initialization abort. However, the state machinemay be frozen (that is, remain in the same state) at the point offailure, not transition to a reset state by setting initialization abortfreeze bit in a register. As an example, when in freeze oninitialization abort mode, when an initialization abort occurs, thestate machine freezes by setting state machine hold bit, such as thesemaphore described above, in a register. Software, in one embodiment,can access registers to read the stopped state and other frozenresources and use the frozen state to debug the state machine. Clearingthe hold bit in this frozen state may result in the state machineexiting to Reset. In-band reset, in one embodiment, does not release thehold.

Automated Test Equipment (ATE): Automated Test Equipment (ATE) may beused to characterize (e.g., margin) the link in the various statesincluding TLS. In this case the ATE can act as an agent and use apredetermined set of transmit patterns to get the device under test(DUT) into TLS. In ATE mode, an ATE mode field to hold one or more bitsin a register can be set. The DUT does the same state actions but whenan exit condition is reached, the next state transition is not taken andthe actual transition occurs when the secondary timeout occurs. Thus,this mode is similar to single step except that transitions occur onpre-programmed timeouts instead of software intervention. For instance,ATE mode can manage a programmable timer based progression thru thestates. Longer timers set during the mode can allow handshakes in statesto complete while still exiting at time specified by software managingor otherwise used in the ATE mode.

In some instances, high volume manufacturing (HVM) tests may beperformed by connecting the transmitter of a DUT port to its ownreceiver and getting this link pair to TLS where signature patterns foreach initialization mode (except loopback or compliance slave) are sentand checked to pass or fail the DUT. This can be accomplished without aspecial mode, but latency fixing may be performed for checking signatureat the correct cycle.

IBIST (Interconnect Built in Self Test):

IBIST uses compliance and loopback states to test the interconnect withbuilt in pattern generators and checkers.

Compliance: An agent may be made a Compliance master or slave forvalidation purposes. The agent enters Compliance from the transmittercalibrate state (TCS). The slave loops back incoming data from themaster after re-timing it to its local clock (without undo of anypolarity inversion or lane reversal). The master sends a compliancepattern and receives it looped back from the slave. The master may besent to Loopback Pattern to try out more specialized patterns. Themaster may also be used without a slave so that its transmitter can becharacterized. Typical use of Compliance is to characterize operation ofthe analog front end on some subset of lanes when loopback is notfunctional. Compliance state may be utilized for jitter or noiseinvestigation, debug, exploring a link, etc. The Compliance state candrive a supersequence with a transmitter from the master. Receiver looksfor a wake on a monitor lane, debounces the wake, drops bad lanes,adapts, and bit locks, etc. The slave transmitter can drive thecompliance pattern until its receiver actions are complete. Thenloop-back is re-timed and non-deskewed. Slave receiver does similarmonitor and debounce, etc. actions. Exit may be to a reset state, suchas a timed reset, or to a loopback pattern state to start the test,among other examples.

Loopback: An agent may be made into a Loopback master for detailedvalidation of a subset of lanes. After successful polling, the masterenters Loopback with a subset of lanes and the other agent also entersLoopback but as the slave. Loopback Master may communicate its intent toenter loopback using a loopback master bit in a polling trainingsequence (TS). An agent which is not loopback master and receives thisbit in TS polling may become a loopback slave. At the end of Polling,both connected ports enter a Loopback Marker state (LMS). From there,the master takes the slave to a Loopback Pattern State, where it sendspatterns and checks them after they are looped back by the slave. Theloopback slave loops back deskewed data (unlike compliance slave). Thestate machine may stay in Loopback indefinitely performing one testafter the other. This enables cascading tests without losing bit lock.Tx adaptation may also use the loopback pattern generation and checkingcapabilities. During TX adaptation, both agents act as masters, but TXsends pattern and Rx checks for bit errors in one scenario.

Pattern Generation: Pattern generators may be activated in Complianceand Loopback states. In one embodiment, a pattern generator, such as theexample pattern generator illustrated in the simplified block diagram ofFIG. 14, can includes one or more pattern buffers, each having aspecified size (e.g. 128 bits) and a plurality of 23-bit (or otherlength) LFSR seed buffers accessed through a structure, such as aregister. The words of pattern generators may be indirectly addressedthrough pattern buffer selection.

In one example implementation, the content of a pattern buffer is sentin each of the enabled lanes serially starting with least significantbit first. Each lane may select any buffer utilizing a registermechanism. All the lanes selecting the same pattern buffer transmit thesame data in a UI. Each pattern buffer may also be independentlyscrambled by a 23 bit pseudo random generator, which is enabled usingbits in a register, such as a pattern control register. The transmissionin any lane may be inverted individually using a Pattern InvertSelection Register, for instance. An auto inversion feature may beenabled to generate cross talk pattern using auto inversion enable bitof a Pattern Generator Control Register, among other examples. Fortransmitter adaptation using loopback, the staggered PRBS23 pattern canbe selected. This pattern may also be used to scramble the flits in lowpower state. The number of patterns sent may be more than the loop countin pattern generator control register, as a loop count refers to thetotal number of 128 bit patterns received. The master may send anintegral number of 128 UI patterns. The pattern generator content can betransmitted continuously until at least one of three exit conditionsoccurs: (i) if the loop count status is equal to the Exponential Loopcount; (ii) Stop On Error is set in the register and an error on anyLane has occurred; or (iii) Stop Test is set in the register. Bydefault, transmitter lanes that have not been detected as indicated bylane dropped in a Transmitter Data Lane Dropped Status Register anddropped receiver lanes as indicated by receiver lane dropped in theReceiver Data Lane Dropped Status Register do not transmit or compareany patterns. If the Include Dropped Lanes bit is set in the PatternGenerator Control Register, dropped lanes also drive and check patternsin Loopback Pattern State. Disabled lanes may not participate intesting. Further, slave transmitter lane content can be controlled viathe Slave Loopback Path Select Register to either loopback the contentfrom the Rx lane or to select the pattern generator. In some instances,there may be no alignment requirement between the looped back data andthe slave generated pattern, among other features, structures, andexamples.

Pattern Check and Error Counting: Pattern checking can be enabled in aLoopback Pattern. Each receiver lane can compare the received dataagainst transmitted data in a corresponding transmitter lane. The slaveside checking can be achieved by programming the same exact patterngeneration values in both the Loopback Master and Slave. Start ofchecking and pattern buffer scrambling can be marked by the end of SDS.Each lane can choose to compare or not depending on a register value.The number of patterns checked can be controlled by a loop count. Everycount indicates 128 bits of pattern buffer data. The loop counter canhave 5 bits of exponent count to enable testing for long time. Loopcount value of zero corresponds to infinite count, in which case, a testcan only be terminated by setting the Stop Test bit, in someimplementations. In order to accommodate electrical parameterapplication that is synchronized upon entry to Loopback Pattern, thechecking can be masked for a time specified by time value in the PatternChecker Control Register. Checking can be made selective on any one bitin an interval using selective error check start and selective errorcheck interval in the Pattern Checker Control Register.

During transmitter adaptation in loopback, both agents can act asmasters but transmitter sends the pattern and the receiver checks forbit errors. Another difference is that Start Test can be set prior toentering loopback and a structure can be used to delay the actual startof test in Loopback marker (sending SD S). In Loopback Pattern when loopcount expires, ending the transmitter adaptation test, the agent canreturn to the Loopback marker, wait for timeout and then exit to Resetfor backchannel operation. When a series of transmitter parameters arebeing tried, the agent may go back to Loopback Pattern instead of Resettill the last parameter has been tried, among other examples.

Error counting can be performed collectively by per lane and globalcounters. Error counters can be accessible through the Lane ErrorCounter Register. The lane being observed and selected toward globalcounter can be indicated by the Receiver Error Counter Lane Select fieldin the Pattern Checker Control Register. The least significant 8 bits ofthe error counter can be available for every lane. The most significant23 bits of the Lane Error Counter Register can only be available for theselected lane indicated by Receiver Error Counter Lane Select at thetime when the state machine enters Loopback Pattern. The Lane ErrorCounter Register does not stick at the maximum value but instead rollsover to all 0's which is indicated by setting the overflow flag (e.g.,bit 31 of Lane Error Counter Register) on a per lane basis. Per lanecounters in non-selected lanes freeze on maximum error count can mark anoverflow. Initial masking, selective error checking, and Loopcount Stallcan also apply to error counters. Software may manually clear the LaneError Counter Register by writing all 1's to bits 31:0, among otherexamples.

Lane Reversal: If lane reversal or polarity inversion is detected at areceiver in Polling, pattern checking (and loopback, if slave) may bedone after undoing the reversal and polarity inversion of lanes.

Agent Loopback Marker State: Loopback marker is an agent state butunlike other agent states master and slave actions and exits may bedifferent. Loopback slave may undo any polarity inversion and/or lanereversal but may not descramble or rescramble looped back bits.Acknowledgment exchange may not apply to slave since it is looping back.Since slave may deskew before looping back on symbol boundary, mastermay not be forced to re-bytelock or re-deskew but the master may re-locktraining sequence to avoid locking to some alias. Means to do this mayinclude re-seeding of LFSR, comparing TS and/or EIEOS or somecombination of these. The end of the SDS marks the end of loopback setupand the start of pattern generation, checking and counting.

Agent Loopback Pattern State (or Block Link state): In this state,instead of control patterns, a master transmitter can send a MISTpattern and its receiver can check for errors in received pattern. Fortransmitter adaptation both agents can be masters. For a predeterminedperiod, the transmitter can sends a pattern and a remote receiver cancompare this pattern and determine a figure of merit or metric for thereceived pattern which is recorded in a storage element, such as aregister. The comparison method and metric may be design dependent(e.g., BER with jitter injection). At the end of the period, both agentscan exit to Reset for the backchannel to examine the metric and set upthe next iteration of transmitter adaptation.

Lane Enable/Disable: Lanes can be disabled at the transmitter, receiver,or both to cause the link to operate at lower width. It maybe theresponsibility of a software-based controller or tool to disable correctlanes if they are reversed.

As noted above, both timers and controls (e.g., control signals,handshakes, etc.) can be used to facilitate transitions within a statemachine defined on agents within an HPI environment. For instance,timers can be used in some state transitions while signaling can be usedin other state transitions. Further, mechanisms can be provided forfacilitating state transitions. For instance, as introduced above, anATE mode or other testing mode can be provided in some implementationsthat can override some state transition mechanisms, for instance, toassist in management and observation of a test of the system. Forexample, in one example testing mode, all state transitions can be set,by a test or test administrator, according to a respective timer. Logiccan also be provided to assist in configuring states that wouldordinarily transition on a control signal to transition based on adefined timer, among other examples. Such other examples can include,for instance, software-controller state transitions such as singlestepping (e.g., through freeze on initialization abort), and otherexamples.

As introduced above, a BLS or L0c window can be utilized to communicatevarious control codes, signals, and other data, including within test,initialization, and error checking applications. A predefined set of BLScodes can be defined that can be communicated within the brief window ofUIs provided through BLS. However, transients, transmission lineirregularities, and other factors can result in bit errors that canpotentially cause the control codes to be corrupted or misinterpreted.Logic can be provided on agents on a link to perform some degree oferror detection and correction to account for more minor errors ininterpreting and processing control codes. If the logic is still unableto make sense of definitively resolve a control code error, a mismatchcan result. In some implementations of HPI, features can be provided torespond to the potential catastrophic side effects of a mismatch. Forinstance, in one embodiment, upon detection of a mismatch, a link can besuspended, including the sending of potentially corrupted flits,adaptation, and other communications. The link can then be automaticallytransitioned into a reset mode at the end of the next BLS (or L0c)interval, among other examples.

As both devices on a link can run off the same reference clock (e.g.,ref clk), elasticity buffers can be omitted (any elastic buffers may bebypassed or used as drift buffers with lowest possible latency).However, phase adjustment or drift buffers can be utilized on each laneto transfer the respective receiver bit stream from the remote clockdomain to the local clock domain. The latency of the drift buffers maybe sufficient to handle sum of drift from all sources in electricalspecification (e.g., voltage, temperature, the residual SSC introducedby reference clock routing mismatches, and so on) but as small aspossible to reduce transport delay. If the drift buffer is too shallow,drift errors can result and manifest as series of CRC errors.Consequently, in some implementations, a drift alarm can be providedwhich can initiate a Physical layer reset before an actual drift erroroccurs, among other examples.

Some implementations of HPI may support the two sides running at a samenominal reference clock frequency but with a ppm difference. In thiscase frequency adjustment (or elasticity) buffers may be needed and canbe readjusted during an extended BLS window or during special sequenceswhich would occur periodically, among other examples.

Some systems and devices utilizing HPI can be deterministic such thattheir transactions and interactions with other systems, includingcommunications over an HPI link, are synchronized with particular eventson the system or device. Such synchronization can take place accordingto a planetary alignment point or signal corresponding to thedeterministic events. For instance, a planetary alignment signal can beused to synchronize state transitions, including entry into a linktransmitting state, with other events on the device. In some instances,sync counters can be employed to maintain alignment with a planetaryalignment of a device. For instance, each agent can include a local synccounter which is initialized by a planetary aligned signal (i.e., commonand simultaneous (except for fixed skew) to all agents/layers which arein sync). This sync counter can count alignment points correctly even inpowered down or low-power states (e.g., L1 state) and can be used totime the initialization process (after reset or L1 exit), including theboundaries (i.e., beginning or end) of an EIEOS (or other EOS) includedin a supersequence utilized during initialization. Such supersequencescan be fixed in size and greater than max possible latency on a link.EIEOS-TS boundaries in a supersequence can thus be used as a proxy for aremote sync counter value.

Further, HPI can support master-slave models where a deterministicmaster device or system can drive timing of interaction with anotherdevice according to its own planetary alignment moments. Further, insome examples, master-master determinism can be supported. Master-masteror master slave determinism can ensures that two or more link-pairs canbe in lock-step at the Link layer and above. In master-masterdeterminism, each direction's exit from initialization can be controlledby respective transmitter. In the case of master-slave determinism, amaster agent can controls the determinism of the link pair (i.e., inboth directions) by making a slave transmitter initialization exit waitfor its receiver to exit initialization, for instance, among otherpotential examples and implementations.

In some implementations, a synchronization (or “sync”) counter can beutilized in connection with maintaining determinism within an HPIenvironment. For instance, a sync counter may be implemented to count adefined amount, such as 256 or 512 UI. This sync counter may be reset byan asynchronous event and may count continuously (with rollover) fromthen (potentially even during a low power link state). Pin-based resets(e.g., power on reset, warm reset) may be synchronizing events thatreset a sync counter, among other example. In one embodiment, theseevents can occur at two sides with skew less (and, in many cases, muchless) than the sync counter value. During initialization, the start ofthe transmitted exit ordered set (e.g., EIEOS) preceding a trainingsequence of a training supersequence may be aligned with the reset valueof the sync counter (e.g., sync counter rollover). Such sync counterscan be maintained at each agent on a link so as to preserve determinismthrough maintaining constant latency of flit transmissions over aparticular link.

Control sequences and codes, among other signals, can be synchronizedwith a planetary alignment signal. For instance, EIEOS sequences, BLS orL0c windows (and included codes), SDSes, etc. can be configured to besynchronized to a planetary alignment. Further, synchronization counterscan be reset according to an external signal, such as a planetaryalignment signal from a device so as to itself be synchronized with theplanetary alignment, among other examples.

Sync counters of both agents on a link can be synchronized. Resetting,initializing, or re-initialization of a link can include a reset of thesync counters to realign the sync counters with each other and/or anexternal control signal (e.g., a planetary alignment signal). In someimplementations, sync counters may only be reset through an entry into areset state. In some instances, determinism can be maintained, such asin a return to an L0 state, without a reset of the sync counter.Instead, other signals already tuned to a planetary alignment, or otherdeterministic event can be used as a proxy for a reset. In someimplementations, an EIEOS can be used in a deterministic state entry. Insome instances, the boundary of the EIEOS and an initial TS of asupersequence can be used to identify a synchronization moment andsynchronize sync counters of one of the agents on a link. The end of anEIEOS can be used, for instance, to avoid the potential of transientscorrupting the start boundary of the EIEOS, among other examples.

Latency fixing can also be provided in some implementations of HPI.Latency can include not only the latency introduced by the transmissionline used for communication of flits, but also the latency resultingfrom processing by the agent on the other side the link. Latency of alane can be determined during initialization of the link. Further,changes in the latency can also be determined. From the determinedlatency, latency fixing can be initiated to compensate for such changesand return the latency expected for the lane to a constant, expectedvalue. Maintaining consistent latency on a lane can be critical tomaintaining determinism in some systems.

Latency can be fixed at a receiver link layer to a programmed value insome implementations using a latency buffer in conjunction withdeterminism and enabled by starting a detect (e.g., by sending a Detectsupersequence) on a sync counter rollover. Accordingly, in one example,a transmitted EIEOS (or other EOS) in Polling and configuration canoccur on a sync counter rollover. In other words, the EIEOS can beprecisely aligned with the sync counter, such that a synchronized EIEOS(or other EOS) can serve as a proxy, in some instances, for the synccounter value itself, at least in connection with certain latency fixingactivities. For instance, a receiver can add enough latency to areceived EIEOS so that it meets the dictated target latency at thePhysical layer-Link layer interface. As an example, if the targetlatency is 96 UI and the receiver EIEOS after deskew is at sync count 80UI, 16 UI of latency can be added. In essence, given the synchronizationof an EIEOS, latency of a lane can be determined based on the delaybetween when the EIEOS was known to be sent (e.g., at a particular synccounter value) and when the EIEOS was received. Further, latency can befixed utilizing the EIEOS (e.g., by adding latency to the transmissionof an EIEOS to maintain a target latency, etc.).

Latency fixing can be used within the context of determinism to permitan external entity (such as an entity providing a planetary alignmentsignal) to synchronize the physical state of two agents across the linkin two directions. Such a feature can be used, for example, in debuggingproblems in the field and for supporting lock-step behavior.Accordingly, such implementations can include external control of one ormore signals that may cause the Physical layer to transition to atransmitting link state (TLS) on two agents. Agents possessingdeterminism capabilities can exit initialization on a TS boundary, whichis also potentially the clean flit boundary when or after the signal isasserted. Master-slave determinism may allow a master to synchronize thePhysical layer state of master and slave agents across the link in bothdirections. If enabled, the slave transmitter exit from initializationcan depend on (e.g., follow or be coordinated with) its receiver exitfrom initialization (in addition to other considerations based ondeterminism). Agents which have Determinism capability may additionallypossess functionality for entering a BLS or L0c window on a clean flit,among other examples.

Determinism may also be referred to as automated test equipment (ATE)when used to synchronize test patterns on ATE with a device under test(DUT) controlling physical and link layer state by fixing latency at thereceiver link layer to a programmed value using a latency buffer.

In some implementations, determinism in HPI can include facilitating theability of one agent to determine and apply a delay based on adeterministic signal. A master can send an indication of a targetlatency to a remote agent. The remote agent can determine actual latencyon a lane and apply a delay to adjust the latency to meet the targetlatency (e.g., identified in a TS). Adjusting the delay or latency canassist in facilitating the eventual synchronized entry into a linktransmitting state at a planetary alignment point. A delay value can becommunicated by a master to a slave, for instance, in a TS payload of asupersequence. The delay can specify a particular number UIs determinedfor the delay. The slave can delay entry into a state based on thedetermined delay. Such delays can be used, for instance, to facilitatetesting, to stagger L0c intervals on lanes of a link, among otherexamples.

As noted above, a state exit can be take place according to a planetaryalignment point. For instance, an SDS can be sent to interrupt a statesupersequence can to drive transition from the state to another state.The sending of the SDS can be timed to coincide with a planetaryalignment point and, in some cases, in response to a planetary alignmentsignal. In other instances, the sending of an SDS can be synchronizedwith a planetary alignment point based on a sync counter value or othersignal synchronized to the planetary alignment. An SDS can be sent atany point in a supersequence, in some cases, interrupting a particularTS or EIEOS, etc. of the supersequence. This can ensure that the statetransitions with little delay while retaining alignment with a planetaryalignment point, among other examples.

In some implementations, HPI may support flits with a width that is, insome cases, not a multiple of the nominal lane width (e.g. using a flitwidth of 192 bits and 20 lanes as a purely illustrative example).Indeed, in implementations permitting partial width transmitting states,the number of lanes over which flits are transmitted can fluctuate, evenduring the life of the link. For example, in some instances, the flitwidth may be a multiple of the number of active lanes at one instant butnot be a multiple of the number of active lanes at another instant(e.g., as the link changes state and lane width). In instances where thenumber of lanes is not a multiple of a current lane width (e.g., theexample of a flit width of 192 bits on 20 lanes), in some embodiments,consecutive flits can be configured to be transmitted to overlap onlanes to thereby preserve bandwidth (e.g., transmitting five consecutive192 bit flits overlapped on the 20 lanes).

FIG. 15 illustrates a representation of transmission of consecutiveflits overlapped on a number of lanes. For instance, FIG. 15 shows arepresentation of five overlapping 192-bit flits sent over a 20 lanelink (the lanes represented by columns 0-19). Each cell of FIG. 15represents a respective “nibble” or grouping of four bits (e.g., bits4n+3:4n) included in a flit sent over a 4 UI span. For instance, a 192bit flit can be divided into 48 four-bit nibbles. In one example, nibble0 includes bits 0-3, nibble 1 includes bits 4-7, etc. The bits in thenibbles can be sent so as to overlap, or be interleaved (e.g.,“swizzled”), such that higher-priority fields of the flit are presentedearlier, error detection properties (e.g., CRC) are retained, amongother considerations. Indeed, a swizzling scheme can also provide thatsome nibbles (and their respective bits) are sent out of order (e.g., asin the examples of FIGS. 15 and 16). In some implementations, aswizzling scheme can be dependent on the architecture of the link layerand format of the flit used in the link layer.

The bits (or nibbles) of a flit with a length that is not a multiple ofthe active lanes can be swizzled, such as according to the example ofFIG. 15. For instance, during the first 4 UI, nibbles 1, 3, 5, 7, 9, 12,14, 17, 19, 22, 24, 27, 29, 32, 34, 37, 39, 42, 44 and 47 can be sent.Nibbles 0, 2, 4, 6, 8, 11, 13, 16, 18, 21, 23, 26, 28, 31, 33, 36, 38,41, 43, and 46 can be sent during the next 4 UI. In UIs 8-11, only eightnibbles remain of the first flit. These final nibbles (i.e., 10, 15, 20,25, 30, 40, 45) of the first flit can be sent concurrently with thefirst nibbles (i.e., nibbles 2, 4, 7, 9, 12, 16, 20, 25, 30, 35, 40, 45)of the second flit, such that the first and second flits overlap or areswizzled. Using such a technique, in the present example, five completeflits can be sent in 48 UI, with each flit sent over a fractional 9.6 UIperiod.

In some instances, swizzling can result in periodic “clean” flitboundaries. For instance, in the example of FIG. 15, the starting 5-flitboundary (the top line of the first flit) may also be referred to as aclean flit boundary since all lanes are transmitting starting nibblefrom same flit. Agent link layer logic can be configured to identifyswizzling of lanes and can reconstruct the flit from the swizzled bits.Additionally, physical layer logic can include functionality foridentifying when and how to swizzle a stream of flit data based on thenumber of lanes being used at the moment. Indeed, in a transition fromone link width state to another, agents can configure themselves toidentify how swizzling of the data stream will be employed. Indeed, bothsides of the link can identify the scheme to be used for swizzling of adata stream so as to identify how a link width state transition willaffect the stream. In some implementations, in order to facilitate alink width state transition at a jagged edge of a flit, the length of apartial FTS (FTSp) can be tailored such that the signaling exit issynchronized, among other examples. Further, physical layer logic can beconfigured to maintain determinism in spite of jagged flit boundariesresulting from swizzling, among other features.

As noted above, links can transition between lane widths, in someinstances operating at an original, or full, width and latertransitioning to (and from) a partial width utilizing fewer lanes. Insome instances, the defined width of a flit may be divisible by thenumber of lanes. For instance, the example of FIG. 16 illustrates suchan example, where the 192-bit flit of the previous examples istransmitted over an 8-lane link. As represented in FIG. 16, 4-bitnibbles of a 192-bit flit can be evenly distributed and transmitted over8 lanes (i.e., as 192 is a multiple of 8). Indeed, a single flit may besent over 24 UI when operating at an 8-lane partial width. Further, eachflit boundary can be clean in the example of FIG. 16. While clean flitboundaries can simplify the state transitions, determinism, and otherfeatures, allowing for swizzling and occasional jagged flit boundariescan allow for the minimization of wasted bandwidth on a link.

Additionally, while the example of FIG. 16, shows lanes 0-7 as the lanesthat remained active in a partial width state, any set of 8 lanes canpotentially be used. Note also that the examples above are for purposesof illustration only. The flits can potentially be defined to have anywidth. Links can also have potentially any link width. Further, theswizzling scheme of a system can be flexibly constructed according tothe formats and fields of the flit, the preferred lane widths in asystem, among other considerations and examples.

The operation of the HPI PHY logical layer can be independent of theunderlying transmission media provided the latency does not result inlatency fixing errors or timeouts at the link layer, among otherconsiderations.

External interfaces can be provided in HPI to assist in management ofthe Physical layer. For instance, external signals (from pins, fuses,other layers), timers, control and status registers can be provided. Theinput signals may change at any time relative to PHY state but are to beobserved by the Physical layer at specific points in a respective state.For example, a changing alignment signal (as introduced below) may bereceived but have no effect after the link has entered a transmittinglink state, among other examples. Similarly command register values canbe observed by Physical layer entities only at specific points in time.For instance, Physical layer logic can take a snapshot of the value anduse it in subsequent operations. Consequently, in some implementations,updates to command registers may be associated with a limited subset ofspecific periods (e.g., in a transmitting link state or when holding inReset calibration, in slow mode transmitting link state) to avoidanomalous behavior.

Since status values track hardware changes, the values read may dependon when they are read. Some status values, however, such as link map,latency, speed, etc., may not change after initialization. For instance,a re-initialization (or low power link state (LPLS), or L1 state, exit)is the only thing which may cause these to change (e.g., a hard lanefailure in a TLS may not result in reconfiguration of link untilre-initialization is triggered, among other examples).

Interface signals can include signals that are external to but affectPhysical layer behavior. Such interface signals can include, asexamples, encoding and timing signals. Interface signals can be designspecific. These signals can be an input or output. Some interfacesignals, such as termed semaphores and prefixed EO among other examples,can be active once per assertion edge, i.e., they may be deasserted andthen reasserted to take effect again, among other examples. Forinstance, Table 1 includes an example listing of example functions:

TABLE 1 Function input pin reset (aka warm reset) input pin reset (akacold reset) input in-band reset pulse; causes semaphore to be set;semaphore is cleared when in-band reset occurs input enables low powerstates input loopback parameters; applied for loopback pattern input toenter PWLTS input to exit PWLTS input to enter LPLS input to exit LPLSinput from idle exit detect (aka squelch break) input enables use ofCPhyInitBegin input from local or planetary alignment for transmitter toexit initialization output when remote agent NAKs LPLS request outputwhen agent enters LPLS output to link layer to force non-retryable flitsoutput to link layer to force NULL flits output when transmitter is inpartial width link transmitting state (PWLTS) output when receiver is inPWLTS

CSR timer default values can be provided in pairs—one for slow mode andone for operational speed. In some instances, the value 0 disables thetimer (i.e., timeout never occurs). Timers can include those shown inTable 2, below. Primary timers can be used to time expected actions in astate. Secondary timers are used for aborting initializations which arenot progressing or for making forward state transitions at precise timesin an automated test equipment (or ATE) mode. In some cases, secondarytimers can be much larger than the primary timers in a state.Exponential timer sets can be suffixed with exp and the timer value is 2raised to the field value. For linear timers, the timer value is thefield value. Either timer could use different granularities.Additionally, some timers in the power management section can be in aset called a timing profile. These can be associated with a timingdiagram of the same name.

TABLE 2 Timers Table Tpriexp Set Reset residency for driving EIEOSReceiver calibration minimum time; for stagger transmitter offTransmitter calibration minimum time; for stagger on Tsecexp Set Timedreceiver calibration Timed transmitter calibration Squelch exitdetect/debounce DetectAtRx overhang for handshake Adapt +bitlock/bytelock/deskew Configure link widths Wait for planetary alignedclean flit boundary Re-bytelock/deskew Tdebugexp Set For hot plug; non-0value to debug hangs TBLSentry Set BLS entry delay - fine BLS entrydelay - coarse TBLS Set BLS duration for transmitter BLS duration forreceiver BLS clean flit interval for transmitter TBLS clean flitinterval for receiver

Command and control registers can be provided. Control registers can belate action and may be read or written by software in some instances.Late-action values can take effect (e.g., pass through fromsoftware-facing to hardware-facing stage) continuously in Reset. Controlsemaphores (prefixed CP) are RW1S and can be cleared by hardware.Control registers may be utilized to perform any of the items describedherein. They may be modifiable and accessible by hardware, software,firmware, or a combination thereof.

Status registers can be provided to track hardware changes (written andused by hardware) and can be read-only (but debug software may also beable to write to them). Such registers may not affect interoperabilityand can be typically complemented with many private status registers.Status semaphores (prefixed SP) can be mandated since they may becleared by software to redo the actions which set the status. Defaultmeans initial (on reset) values can be provided as a subset of thesestatus bits related to initialization. On an initialization abort, thisregister can be copied into a storage structure.

Tool Box registers can be provided. For instance, testability tool-boxregisters in the Physical layer can provide pattern generation, patternchecking and loop back control mechanisms. Higher-level applications canmake use of these registers along with electrical parameters todetermine margins. For example, Interconnect built in test may utilizethis tool-box to determine margins. For transmitter adaptation, theseregisters can be used in conjunction with the specific registersdescribed in previous sections, among other examples.

In some implementations, HPI supports Reliability, Availability, andServiceability (RAS) capabilities utilizing the Physical layer. In oneembodiment, HPI supports hot plug and remove with one or more layers,which may include software. Hot remove can include quiescing the linkand an initialization begin state/signal can be cleared for the agent tobe removed. A remote agent (i.e. the one that is not being removed(e.g., the host agent)) can be set to slow speed and its initializationsignal can also be cleared. An in-band reset (e.g., through BLS) cancause both agents to wait in a reset state, such as a Calibrate ResetState (CRS); and the agent to be removed can be removed (or can be heldin targeted pin reset, powered down), among other examples and features.Indeed, some of the above events may be omitted and additional eventscan be added.

Hot add can include initialization speed can default to slow and aninitialization signal can be set on the agent to be added. Software canset speed to slow and may clear the initialization signal on the remoteagent. The link can come up in slow mode and software can determine anoperational speed. In some cases, no PLL relock of a remote is performedat this point. Operational speed can be set on both agents and an enablecan be set for adaptation (if not done previously). The initializationbegin indicator can be cleared on both agents and an in-band BLS resetcan cause both agents to wait in CRS. Software can assert a warm reset(e.g., a targeted or self-reset) of an agent (to be added), which maycause a PLL to relock. Software may also set the initialization beginsignal by any known logic and further set on remote (thus advancing itto Receiver Detect State (RDS)). Software can de-assert warm reset ofthe adding agent (thus advancing it to RDS). The link can theninitialize at operational speed to a Transmitting Link State (TLS) (orto Loopback if the adaption signal is set), among other examples.Indeed, some of the above events may be omitted and additional eventscan be added.

Data lane failure recovery can be supported. A link in HPI, in oneembodiment, can be resilient against hard error on a single lane byconfiguring itself to less than full width (e.g. less than half the fullwidth) which can thereby exclude the faulty lane. As an example, theconfiguration can be done by link state machine and unused lanes can beturned off in the configuration state. As a result, the flit may be sentacross at a narrower width, among other examples.

In some implementations of HPI, lane reversal can be supported on somelinks. Lane reversal can refer, for instance, to lanes 0/1/2 . . . of atransmitter connected to lanes n/n−1/n−2 . . . of a receiver (e.g. n mayequal 19 or 7, etc.). Lane reversal can be detected at the receiver asidentified in a field of a TS header. The receiver can handle the lanereversal by starting in a Polling state by using physical lane n . . . 0for logical lane 0 . . . n. Hence, references to a lane may refer to alogical lane number. Therefore, board designers may more efficiently laydown the physical or electrical design and HPI may work with virtuallane assignments, as described herein. Moreover, in one embodiment,polarity may be inverted (i.e. when a differential transmitter +/− isconnected to receiver −/+. Polarity can also be detected at a receiverfrom one or more TS header fields and handled, in one embodiment, in thePolling State.

Link Layer

The Link layer can guarantee reliable data transfer between two protocolor routing entities. The Link layer can abstract the Physical layer fromthe Protocol layer, handle flow control between two protocol agents, andprovide virtual channel services to the Protocol layer (Message Classes)and Routing layer (Virtual Networks).

In some implementations, the Link layer can deal with a fixed quantum ofinformation, termed a flit. In one example, the flit can be defined tobe 192 bits in length. However, any range of bits, such as 81-256 (ormore) may be utilized in different variations. A large flit size, suchas 192 bits, may include format, cyclic redundancy check (CRC), andother changes. For instance, a larger flit length can also permit theCRC field to be expanded (e.g., to 16 bits) to handle the larger flitpayload. The number of phits or unit intervals (UI) (e.g., the time usedto transfer a single bit or phit, etc.) to transfer a single flit canvary with link width. For instance, a 20 lane or bit link width cantransfer a single 192 bit flit in 9.6 UI, while an 8 lane link widthtransfers the same flit in 24 UI, among other potential examples. Thelink layer crediting and protocol packetizing can also be based on aflit.

FIG. 17 illustrates a representation 1700 of a generalized flit for an 8lane link width. Each column of the representation 1700 can symbolize alink lane and each row a respective UI. In some implementations, asingle flit can be subdivided into two or more slots. Distinct messagesor link layer headers can be included in each slot, allowing multipledistinct, and in some cases, independent messages corresponding topotentially different transactions to be sent in a single flit. Further,the multiple messages included in slots of a single flit may also bedestined to different destination nodes, among other examples. Forinstance, the example of FIG. 17 illustrates a flit format with threeslots. The shaded portions can represent the portion of the flitincluded in a respective slot.

In the example of FIG. 17, three slots, Slots 0, 1, and 2, are provided.Slot 0 can be provided 72 bits of flit space, of which 22 bits arededicated to message header fields and 50 bits to message payload space.Slot 1 can be provided with 70 bits of flit space, of which 20 bits arededicated to message header fields and 50 bits to message payload space.The difference in message header field space between can be optimized toprovide that certain message types will be designated for inclusion inSlot 0 (e.g., where more message header encoding is utilized). A thirdslot, Slot 2, can be provided that occupies substantially less spacethan Slots 0 and 1, in this case utilizing 18 bits of flit space. Slot 2can be optimized to handle those messages, such as acknowledges, creditreturns, and the like that do no utilize larger message payloads.Additionally, a floating payload field can be provided that allows anadditional 11 bits to be alternatively applied to supplement the payloadfield of either Slot 0 or Slot 1.

Continuing with the specific example of FIG. 17, other fields can beglobal to a flit (i.e., apply across the flit and not to a particularslot). For instance, a header bit can be provided together with a 4-bitflit control field that can be used to designate such information as avirtual network of the flit, identify how the flit is to be encoded,among other examples. Additionally, error control functionality can beprovided, such as through a 16-bit cyclic CRC field, among otherpotential examples.

A flit format can be defined so as to optimize throughput of messages onthe Link layer. Some traditional protocols have utilized unslotted,smaller flits. For instance, in QPI an 80-bit flit was utilized. Whilethe flit throughput of a larger (e.g., 192-bit flit) may be lower,message or packet throughput can be increased by optimizing use of theflit data. For instance, in some implementations of QPI, the entire80-bit flit space was utilized regardless of the message size or type.By subdividing a larger flit into slots of predetermined lengths andfields, the 192 flit length can be optimized realizing higher efficiencyeven in instances when one or more of the available slots are sometimesunused. Indeed, Link layer traffic can be assumed to include manydifferent types of messages and traffic, including messages and packetswith varying header lengths and fields. The respective lengths andorganization of slots defined in a flit can be defined so as tocorrespond with the statistical or expected frequency of variousmessages and the needs of these messages. For instance, two larger slotscan be defined for every small slot, to accommodate an expectedstatistical frequency of messaging using these larger message types andheader lengths, among other example. Further, flexibility can also beprovided to further accommodate the varied traffic, such as through afloating payload field, as in the example of FIG. 17. In some instances,a flit format can be fixed, including the bits dedicated to particularslots in the flit.

In the example of FIG. 17, a “Hdr” field can be provided for the flitgenerally and represent a header indication for the flit. In someinstances, the Hdr field can indicate whether the flit is a header flitor a data flit. In data flits, the flit can still remain slotted, butomit or replace the use of certain fields with payload data. In somecases, data fields may include an opcode and payload data. In the caseof header flits, a variety of header fields can be provided. In theexample of FIG. 17, “Oc” fields can be provided for each slot, the Ocfield representing an opcode. Similarly, one or more slots can have acorresponding “msg” field representing a message type of thecorresponding packet to be included in the slot, provided the slot isdesigned to handle such packet types, etc. “DNID” fields can represent aDestination Node ID, a “TID” field can represent a transaction ID, a“RHTID” field can represent either a requestor node ID or a home trackerID, among other potential fields. Further, one or more slots can beprovided with payload fields. Additionally, a CRC field can be includedwithin a flit to provide a CRC value for the flit, among other examples.

In some implementations, link width can vary during the life of thelink. For instance, the Physical layer can transition between link widthstates, such as to and from a full or original lane width and adifferent or partial lane width. For example, in some implementations, alink can be initialized to transfer data over 20 lanes. Later, the linkcan transition to a partial width transmitting state where only 8 lanesare actively used, among many other potential examples. Such lane widthtransitions can be utilized, for instance, in connection with powermanagement tasks governed by one or more power control units (PCU) amongother examples.

As noted above, link width can influence flit throughput rate. FIG. 18is a representation of an example 192-bit flit sent over an 8 lane link,resulting in throughput of the flit at 24 UI. Further, as shown in theexample of FIG. 18, bits of the flit can be sent out of order in someinstances, for example, to send more time-sensitive fields earlier inthe transfer (e.g., flit type fields (e.g., data or header flit),opcodes, etc.), preserve or facilitate particular error detection orother functionality embodied in the flit, among other examples. Forinstance, in the example of FIG. 18, bits 191, 167, 143, 119, 95, 71,47, and 23 are sent in parallel on lanes L7 through L0 during a first UI(i.e., UI0) of transfer, while bits 168, 144, 120, 96, 72, 48, 24, and 0are sent during the 24^(th) (or final) UI of the flit transfer (i.e.,UI23). It should be appreciated that other ordering schemes, flitlengths, lane widths, etc. can be utilized in other implementations andexamples.

In some instances, the length of the flit can be a multiple of thenumber of active lanes. In such instances, the flit can be transmittedevenly on all active lanes and transfer of the flit can endsubstantially simultaneously at a clean (i.e., non-overlapping)boundary. For example, as shown in the representation of FIG. 15, bitsof a flit can be considered to be transmitted in consecutive groupingsof 4 bits, or “nibbles.” In this example, a 192 bit flit is to betransferred over an 8 lane link. As 192 is a multiple of 8, the entireflit can be cleanly transferred over the 8 lane link in 24 UI. In otherinstances, the flit width may not be a multiple of the number of activelanes. For instance, FIG. 16 shows another representation of an example192 bit transferred over 20 lanes. As 192 is not evenly divisible by 20,transfer of the full flit would require a non-integer number ofintervals (e.g., 9.6 UI). In such cases, rather than wasting “extra”lanes not utilized during the 10th UI of transfer, a second overlappingflit can be transferred with the final bits of a preceding flit. Suchoverlapping, or swizzling, of the flits can result in jagged flitboundaries and flit bits sent out of order in some implementations. Thepattern utilized for the transfer can be configured to allow moretime-sensitive fields of the flit to be transferred earlier in the flit,preservation of error detection and correction, among otherconsiderations. Logic can be provided in one or both of the Physical andLink layers to transfer flit bits according to such patterns anddynamically change between patterns based on the current link width.Further logic can be provided to re-order and re-construct flits fromsuch swizzled or ordered bit streams, among other examples.

In some implementations, flits can be characterized as header flits(e.g., bearing packet header data) or data flits (e.g., bearing packetpayload data). Returning to FIG. 17, a flit format can be defined thatincludes three (3) distinct slots (e.g., 0, 1, and 2), allowing up tothree headers to be transferred in a single flit (e.g., one header ineach slot). Accordingly, each slot can have both control fields and apayload field. In addition to these, payload fields can be defined foreach header (and slot). Further, a floating payload field can be definedthat can be flexibly used as extra payload length for two or more of theslots (e.g., by either slot 0 or slot 1), based on the header types inthese slots. The floating field can enable, in one implementation, 11extra bits of payload for either Slot 0 or Slot 1. Note inimplementations defining a larger flit more floating bits may be usedand in smaller flits less floating bits may be provided. In someimplementations, by allowing a field to float between the two slots,extra bits can be provided as needed for certain messages while stillstaying within a predefined flit length (e.g., 192 bits) and maximizingthe utilization of the bandwidth.

In the example of FIG. 17, three slots, Slots 0, 1, and 2, are provided.Slot 0 can be provided 72 bits of flit space, of which 22 bits arededicated to message header fields and 50 bits to message payload space.Slot 1 can be provided with 70 bits of flit space, of which 20 bits arededicated to message header fields and 50 bits to message payload space.The difference in message header field space between can be optimized toprovide that certain message types will be designated for inclusion inSlot 0 (e.g., where more message header encoding is utilized). A thirdslot, Slot 2, can be provided that occupies substantially less spacethan Slots 0 and 1, in this case utilizing 18 bits of flit space. Slot 2can be optimized to handle those messages, such as acknowledges, creditreturns, and the like that do no utilize larger message payloads.Additionally, a floating payload field can be provided that allows anadditional 11 bits to be alternatively applied to supplement the payloadfield of either Slot 0 or Slot 1.

Continuing with the specific example of FIG. 17, other fields can beglobal to a flit (i.e., apply across the flit and not to a particularslot). For instance, a header bit can be provided together with a 4-bitflit control field that can be used to designate such information as avirtual network of the flit, identify how the flit is to be encoded,among other examples. Additionally, error control functionality can beprovided, such as through a 16-bit cyclic CRC field, among otherpotential examples.

A flit format can be defined so as to optimize throughput of messages onthe Link layer. Some traditional protocols have utilized unslotted,smaller flits. For instance, in QPI an 80-bit flit was utilized. Whilethe flit throughput of a larger (e.g., 192-bit flit) may be lower,message or packet throughput can be increased by optimizing use of theflit data. For instance, in some implementations of QPI, the entire80-bit flit space was utilized regardless of the message size or type.By subdividing a larger flit into slots of predetermined lengths andfields, the 192 flit length can be optimized realizing higher efficiencyeven in instances when one or more of the available slots are sometimesunused. Indeed, Link layer traffic can be assumed to include manydifferent types of messages and traffic, including messages and packetswith varying header lengths and fields. The respective lengths andorganization of slots defined in a flit can be defined so as tocorrespond with the statistical or expected frequency of variousmessages and the needs of these messages. For instance, two larger slotscan be defined for every small slot, to accommodate an expectedstatistical frequency of messaging using these larger message types andheader lengths, among other example. Further, flexibility can also beprovided to further accommodate the varied traffic, such as through afloating payload field, as in the example of FIG. 17. In some instances,a flit format can be fixed, including the bits dedicated to particularslots in the flit.

In some implementations, by allowing a field to float between the twoslots, extra bits can be provided as needed for certain messages whilestill staying within a predefined flit length (e.g., 192 bits) andmaximizing the utilization of the bandwidth. Turning to the examples ofFIG. 19, two instances 1905, 1910 of an example 192-bit flit are shownon an 8 lane data link. In one instance, a flit (e.g., 1905) can includethree slots, Slots 0, 1, and 2. Each of Slots 0 and 1 can include 50-bitpayload fields. The floating field can be provided to alternativelyextend the payload field of the either Slot 0 or Slot 1 by the fieldlength (e.g., 11 bits) of the floating field. The use of a floatingfield can further extend the efficiency gains provided through adefined, multi-slot flit format. The sizing of the slots within theflit, and the types of messages that can be placed in each slot, canpotentially provide increased bandwidth even with a reduced flit rate.

In the particular example of FIG. 17, the messages that can use Slots 1and 2 can be optimized, reducing the number of bits to be set aside toencode these slots' opcodes. When a header having more bits that Slot 0can provide enters the Link layer, slotting algorithms can be providedto allow it to take over Slot 1 payload bits for additional space.Special control (e.g. LLCTRL) flits may also be provided that consumeall three slots worth of bits for their needs. Slotting algorithms mayalso exist to allow individual slots to be utilized while other slotscarry no information, for cases where the link is partially busy.

In the particular example of FIG. 19, example use of a floating flitfield is shown. For instance, in the case of Standard Address Snoop(SA-S) Headers, only a single SA-S message (and header) may be permittedto be sent in the same flit (e.g., to prevent conflicts or where theSA-S payload utilizes a larger than 50-bit payload, etc.). Consequently,in such examples, a SA-S may only be sent in either Slot 0 or Slot 1 ofthe same flit in such instances. In the example of flit 1905, an SA-Sheader is included in Slot 0 and is to make use of the floating field.Consequently, in the example of flit 1905, the use of the floating fieldis dedicated to extend the payload of Slot 0's payload. In anotherexample, of flit 1910, the SA-S header is to occupy Slot 1. In theexample of flit 1910, the floating field is instead dedicated to extendthe payload of Slot 1. Other potential examples can also make use of theflexibility provided through a floating payload field of a slotted flitutilizing principles illustrated in the particular examples of FIGS. 17and 19.

In one embodiment, such as that illustrated in connection with FIG. 17,two slots, Slot 0 and 1, can be defined as having equally sized payloadfields, while Slot 2 has a much smaller payload field for use by aparticular subset of headers that lack the use of such larger payloadfields, for instance. Further, in one example, Slot 1 and 2 controlfields may not carry full Message Class encodings (unlike Slot 0), andSlot 2 may not carry a full opcode encoding, among other potentialimplementations.

As noted above, in some implementations, Slots 1 and 2 may not carryfull Message Class encodings, as not all bits are utilized due toslotting restrictions. Slot 1 can carries a Message Class bit 0. Here,request (REQ) and snoop (SNP) packets are allowed. In thisimplementation, REQ and SNP Message Class encodings are differentiatedby bit 0. As a result, if a designer wanted to allow different messageclasses in partial message class field, they could either select adifferent bit position (i.e. an upper bit that differentiates twodifferent types of messages) or assign different message types to thelower order bit. However, here the upper two bits are implied as 0'swith the lower bit distinguishing between a REQ and a SNP. In thisexample, Slot 2 carries no Message Class bits, as only response (RSP)(encoding 2) packets are allowed in. Therefore, the Message Classencoding for Slot 2 is a RSP-2. Slot 2 can also carry a partial opcode.As above, one or more of the opcode bits can be assumed to be 0. As aresult, partial message class fields and partial operation code fieldsmay be utilized that define a subset of messages and op codes that maybe utilized. Note that multiple sets of opcodes and messages classes maybe defined. Here, if a lower order bit of the message class is used,then a subset of message types (i.e. MSG type 1/MSG type 2) isavailable. However, if 2 bits are used, then a larger subset is provided(e.g. Message Type 1/Message Type 2/Message Type 3/Message Type 4),among other examples.

Message class encodings can correspond to particular header types to beincluded (or to utilize) one or more defined slots in a flit. Forinstance, a header may have multiple sizes. In one example, a three slotflit can be defined to support potentially four sizes of header, basedon header type. Table 3 includes an exemplary listing of potentialheader formats and associated sizes:

TABLE 3 Header Format Header Size Description SA Single Slot RequestSA-S Single Slot Snoops (incorporates floating payload field) SA-DSingle Slot Data header SR-U Small Slot Completion without data SR-OSingle Slot Ordering SR-C Single Slot Conflict resolution SR-D SingleSlot Data header PW Dual Slot Partial write PR Dual Slot Partial readP2P Dual Slot Peer-to-peer NCM Dual Slot Non-coherent messagingSlot-NULL Single Slot (or Control flit Opcode only) LLCRD Small SlotControl flit LLCTRL Full Flit Control flit

Small (or single) slot headers can be for those message small enough tofit in Slot 2, and that don't have protocol ordering requirementsforcing them into Slot 0. A small slot header can also be placed in Slot0, if the slotting restrictions for the flit call for it. The singleslot header can be for those messages with payload that can fit in Slot0 or Slot 1. Some single slot headers may also make use of the floatingpayload field. For instance, Standard Address Snoop (SA-S) Headers, inone embodiment, may not be sent in both slot 0 and slot 1 of the sameflit in the example where only one HTID or floating field exists.Certain single slot headers may use Slot 0 based on protocol orderingrequirements. The dual slot header can be for those messages largeenough that they are to consume both the Slot 0 and Slot 1 payloadfields, in addition to the floating payload field, among other examples.

A slot NULL opcode may include a special opcode, that can be used, inone example, in either Slot 0 or Slot 1. As an example, FIG. For Slot 0,Slot_NULL may be used when the link layer has no header to transmit inSlot 0, but it does have a header to transmit in Slot 1 or 2. WhenSlot_NULL is used in Slot 0, the Slot 0 payload is considered reserved(RSVD), among other examples. In some implementations, Slot_NULL can beutilized in Slot 1 potentially under two conditions. First, when Slot 0is encoding a dual slot or special control header, and thus consumingthe Slot 1 payload. In such instances, the Slot 1 opcode can be set toSlot_NULL. The second condition is when the link layer has nothing tosend in Slot 1, but does have a valid Single Slot header for Slot 0 orSmall Slot Header for Slot 2. Under this condition, the Slot 1 opcodecan be set to Slot_NULL and the Slot 1 payload can be consideredReserved, among other potential examples.

In some implementations, the small Slot 2, may include a reduced numberof opcode bits. When the link layer has nothing to send in Slot 2, itmay send an “Implicit NULL” by encoding a specific opcode, such as alink layer credit opcode and setting the Slot 2 payload field to allzeros. The receiver of this Slot 2 encoding can process it as a linklayer credit message (except in the case of the special control flits),but the all zeros encoding will have no effect on the Credit andAcknowledge state. In the case of special control flits, because theycan consume the entire flit, the Slot 2 payload can be considered RSVDand the Implicit NULL will be ignored. Where the link layer has nothingto send in any of the three slots and the CRD/ACK fields, the link layermay transmit a special control null message, among other examples.

Slotting restrictions can be defined for one or more of the definedslots of a flit. In one embodiment, dual slot headers may only havetheir Message Class and Opcode placed in Slot 0. When Slot 0 contains aDual Slot Header, Slot 1 may encode a Slot_NULL opcode, as the Slot 1Payload field will be consumed by the Slot 0 header. When Slot 0contains a Slot_NULL, single slot, or small slot header, Slots 1 and 2may both encode a non-NULL header. Only small slot headers are allowedin Slot 2 in this particular example (e.g., illustrated in FIG. 17).When both Slot 0 and Slot 1 contain single slot headers, one may be of atype that consumes the floating payload field. If neither Slot 0 or Slot1 contain a header type that consumes the floating payload field, thefield may be considered RSVD.

Additionally, in some implementations, the Link layer can utilizemultiple different types of virtual network or virtual channel credits.In one example, pooled virtual network adaptive (VNA) credits can besupported and a VNA field can be provided. In one exampleimplementation, when the VNA field indicates a non-VNA flit (e.g., aflit that utilizes a different credit pool), the header may bedesignated to be placed in Slot 0. Further, the Slot 2 opcode mayinclude a Slot_2 credit in this case. Further, when Slot 0 encodes aspecial control Header, both Slot 1 and Slot 2 control fields may be setto fixed values, and no headers may be placed in these slots, amongother potential implementations.

As noted above, in header flits, a variety of different fields can beprovided to be incorporated in corresponding flit slots, such asillustrated in the particular example of FIG. 17. Note that the fieldsillustrated and described a provided by way of example and additional orsubstitute fields can also be incorporated. Indeed, some of the fieldsdescribed may be optional and be omitted in some implementations, amongother examples.

In one example, a message class (MC) field can be provided, as well asother fields. In some examples, the Protocol layer can use the MessageClass field to define the Protocol Class which also acts as the MajorOpcode field. The Link layer can use the Message Class field as part ofthe virtual channel (VC) definition. Some Protocol Classes/VC can usemultiple Message Class encodings due to the number of opcodes that areto be encoded, among other examples. For instance, Requests (REQ),Snoops (SNP), Response (RSP), writeback, non-coherent bypass, andnon-coherent standard types can be supported. If each type encodedsixteen operations, then there would be an opcode space of 96operations. And if another mode bit or other opcode space was definedfor each type, then another 96 operations could be provided; and so on.

In one example, an Opcode field can additionally be provided. TheProtocol layer may use the opcode in conjunction with the Message Classto form a complete opcode (i.e. define the message class type and theoperation within). As an example, the same opcode with a REQ messagetype may define a first request operation, while the same opcode with aSNP message class may define a second, different SNP operation, amongother examples. The Link Layer may use the opcode to distinguish, forinstance, between a Home Agent target or a Caching Agent target forpackets when a Home Agent and a Caching Agent share the same NodeID.Additionally, the Link Layer may also use the opcode to determine packetsize, among other potential uses.

As noted above, flit headers can further include a Virtual networkAdaptive (VNA) field. In one example, when a VNA field is set to a firstvalue, the field can indicate that the flit is using VNA credits. Whenset to a second value, the flit is using VN0 or VN1 credits, among otherpotential implementations. In one embodiment, a value may indicate theflit is a single slot flit and slots 1 and 2 codes can be defined asNULL.

A Virtual Network (VN) field can also be provided and indicate for aflit if the header(s) in the flit are utilizing a particular virtualnetwork, such as a virtual network VN0 or VN1. This may be used for bothcrediting purposes and to indicate which virtual network a messageshould drain to if using VNA. If one VN bit is provided for the entireflit, any VNA flit that contains multiple headers can ensure that all ofthem are draining to VN0 or all of them are draining to VN1.Alternatively, multiple VN bits may be provided. For non VNA flits, onlySlot 0 may be allowed to have a non-control opcode, so the VN mayindicate that header's network.

In some implementations, slots in a flit can be used for small payloadmessages such as credit returns, ACKs, NAKs, among others. In oneexample, a channel field can be provided that can be encoded for use incredit returns. This encoding, in combination with the Virtual Networkfield, may provide the Virtual Channel that a credit return maps to.Where a Message Class has multiple encodings, they may all map to asingle Channel value for crediting. When the credit return type is VNA,the Channel value can be ignored. Use of RSVD encodings may be treatedas an error by the receiving component. Table 4 includes examples ofdifferent Channel options that can be encoded. Note that any combinationof bits (or bits representing a hexadecimal value) may be utilized. Asan example, a lower order of 3 bits can be used for encoding.

TABLE 4 Channel REQ: Request SNP: Snoop RSP: Response RSVD: Reserved WB:Write back NCB: Non-coherent Bypass NCS: Non-coherent Standard

Acknowledgement, or ACK, fields can also be provided as header fields tobe included in a flit slot. An ACK field may be used by the Link layerto communicate from a receiver to a sender error free receipt of flits.ACK having a first value indicates that a number of flits, such as 4, 8,or 12, have been received without error. When a sender receives an ACKit may deallocate the corresponding flits from the Link Layer RetryQueue. Ack and Ack fields can be used in credit return control flits(e.g., LLCRD), with the total number of Acknowledges being returneddetermined by creating the full acknowledge return value (Acknowledgefirst portion, ACK, Acknowledge second portion), among other examples.

As noted above, a Header indication bit (Hdr) can also be provided insome implementations and can be used for one or more purposes. Forinstance, a Hdr packet can identify whether the packet is a header ordata flit, can indicate that the flit is the start of a new packet, aswell as indicate the start of an interleaved Link Layer Control flit.The Hdr can be set for the first flit of all packets. Further, anAddress field can be provided to identify a global system address. Allcoherent transactions may be a number of byte aligned and may return thenumber of bytes of data, eliminating the need for some portion of theAddress bits (e.g. at 64 bytes, the lower 6 bits may be omitted). Forcertain other packets, a full byte level address is to be utilized. ALength field can be provided in some examples to indicate a length ofthe requested data in bytes for any transaction that is doing a partialread. The partial read specifies the offset (e.g. the lower portion ofthe address bits omitted above) and the Length. Valid lengths are 0 tothe number of bytes that the transactions are aligned to less one, amongother examples.

Additional fields can be included. A Byte Enable field can be providedin some instances to indicate the valid bytes for any transaction doinga partial write. A Byte Enable field may have any number 0 to the numberof bytes that the transactions are aligned to less one. A Request TID(RTID) field can be used to uniquely identify the different requestsfrom a single Protocol Agent. A Home tracker ID (HTID) field can be usedin Snoop packets and Snoop Response packets to indicate the Home TrackerID of the transaction the snoop and its response are to be associatedwith. An RHTID field can also be provided in some implementations andflexibly embody an RTID or an HTID, depending on the opcode. Forinstance, for a snoop, RHTID can be interpreted as RTID, as snoops havean explicit HTID field. For response packets, on the other hand,targeting a home agent, RHTID can be interpreted as HTID. Additionally,for response packets targeting a cache agent, RHTID can be interpretedas RTID for opcodes except FwdCnfltO, among other examples. In someimplementations, other message types can default to being interpreted asRTID.

In some implementations, additional fields can be provided such as aDestination Node ID (DNID) field, Requestor Node ID (RNID) field,Conflict Node ID (CNID) field, and Source Node ID (SNID) field. The DNIDcan identify the destination of a packet. It can be supplied by theProtocol Layer and used by the Link and Routing layers to guide packetsto their destinations. The RNID field can identify the originalrequester/initiator of a transaction and can be supplied by the ProtocolLayer. The CNID can be used in RspCnflt packets to indicate the node ID(NID) of the agent where the snoop experienced a conflict and theFwdCnfltO should be sent. A SNID field can be used in SR-D packets toindicate the Node ID of the agent transmitting the SR-D packet.

Additionally, a Prior Cache Line State (PCLS) field can be provided toencode the state of the cache line where it was found at either a peercaching agent or in a home node. For example, if the cache line wassupplied by a peer node in the F state, the field should be set to afirst value. If the cache line was sent by a home node, the home nodeshould set the field to reflect either the I state or S state dependingon the snoop responses it received. If an agent does not support thisfield it should always be encoded as a default value. Note the PCLSfield may be used for performance monitoring/tuning. A Non-CoherentProtected field can denote whether a request is to Normal or Protectedspace. See the table below for the encodings.

In some implementations, HPI Link layer can support a multi-slot flitwith explicit fields, such as those described above, as well as implicitfields. For instance, slot message encoding and opcodes can be regardedas implicit. For instance, Slots 1 and 2 may not carry full MessageClass encodings, as not all bits are required, in some instances, due toslotting restrictions. Slot 1 carries only Message Class bit 0, and onlyREQ and SNP packets may be allowed in this slot. REQ and SNP MessageClass encodings can be differentiated by bit 0, and the upper two bitscan be implied as 0's. Slot 2 may not carry Message Class bits, as onlyRSP (encoding 2) packets are allowed in this Slot. Therefore the MessageClass encoding for Slot 2 may be RSP-2. Slot 2 can also only carry aportion of an opcode, with a second portion of an opcode being assumedto be a default value. This means that RSP-2 packets with the secondportion holding the default value are allowed in Slot 2. Further, theComplete opcode field, in one embodiment, can be created by combiningthe full Message Class with the full Opcode field, forming a CompleteOpcode.

Additional examples of implicit fields can include packet length, whichcan be implied by the opcode. Further, the globally Unique TransactionID (UTID) may be formed by combining Requester NodeID with RequesterTransaction ID. Note, that there may be an overlap in the RTID spacebetween P2P and non-P2P transactions. For instance, the globally P2PUnique Transaction ID (P2PUTID) may be formed by combining RequesterNodeID with Requester Transaction ID.

In some implementations, such as that illustrated in the examples ofFIG. 17, the structure of the flit can permit Transaction IDs (TIDs)that utilize 11 bits of flit space. As a result, pre-allocation and theenabling of distributed home agents may be removed. Furthermore, use of11 bits, in some implementations, allows for the TID to be used withouthaving use for an extended TID mode.

Link layer logic can be provided on each agent on each side of a link. Atransmitter of an agent or device can receive data from higher layers(e.g., a Protocol or Routing layer) and generate one or more flits totransfer the data to a receiver of a remote agent. The agent cangenerate a flit with two or more slots. In some instances, the agent canattempt to combine multiple messages or packets within a single flitutilizing the defined slots.

Link layer logic can include, in some implementations, dedicated pathscorresponding to each defined slot. The paths can be embodied in eitheror both hardware and software. A receiver of an agent can receive a flit(as re-constructed using the Physical layer) and Link layer logic canidentify each of the slots and process the slots using each slot'srespective path. The Link layer can process the flits, and the dataincluded in each slot, according to one or more encoded fields of theflit, such as a control field, header field, CRC field, etc.

In one illustrative example, a transmitter can receiver a write requestassociated with a first transaction, a snoop request associated withanother second transaction, and one or more acknowledges or creditreturns that it can send to (or through) another device. The transmittercan send a single flit to the other device over a serial data link of aninterconnect, the single flit to include headers for each of the writerequest, the snoop, and an acknowledge (e.g., a completion), each headeroccupying a respective flit slot (such as in the 3-slot implementationillustrated in the example of FIG. 17). The transmitter can buffer datait receives and identify opportunities to send multiple messages in asingle flit. The receiver can receive the compiled flit and process eachslot in parallel to identify and process each of the three messages,among many other potential examples.

In some implementations, multiple headers can be included in amulti-slot flit so as to send multiple messages using a single flit. Insome examples, the respective headers can each relate to fullyindependent transactions. In some implementations, the flexibility ofthe flit can be constrained such that each flit only contains messagesdirected to a particular virtual network. Other implementations mayabstain from such a condition.

In instances where slot messages are to all apply to a common one of aplurality of virtual networks, bits that would have traditionally beenreserved for identification of a slot's respective virtual network canbe dedicated to other uses, that in some implementations, furtherincreases efficiency gains introduced by the flit format, amongpotentially other benefits. In one example, all slots in a multi-slotheader flit may be aligned to a single virtual network such as only VNA,only VN0, or only VN1, etc. By enforcing this, per slot bits indicatingvirtual network can be removed. This increases the efficiency of flitbit utilization and potentially enables such other features, asexpanding from 10 bit TIDs to 11 bit TIDs, among other examples.Expanding to an 11 bit TID can, in some implementations, allow for theTID to be used without having use for an extended TID mode.

As noted above, in some implementations, special flit types can beprovided, such as Link layer control flit. Such control flits can stillutilize the defined multi-slot format defined for a slot while utilizingspecial header types corresponding to the control and error managementfunctionality to be facilitated using such control flits. For example, aspecial header types can be provided that consume the entire flit andare used for communication between connected Link layers.

In one implementations, special control messages can be placed under asingle Message class plus Opcode encoding for Link layer controlmessaging. This opcode can be designated “LLCTRL” and all controlmessage types can fall under this sub-type of opcode. This can, in someimplementations, allow the number of Message class bits to be includedin a multi-slot flit format to be reduced (e.g., from four message classbits to three, etc.). In some implementations, another form of Linklayer control flit can also be provided to handle a subset of thecontrol messages. For instance, a LLCRD opcode can be defined foracknowledgement and credit returns, among other examples. In the case ofLLCTRL opcodes, a multi-slot flit, rather than permitting use of each ofthe multiple slots, can dedicate the entire flit payload to the controlmessage and permit special encodings for link-to-link communications.

A variety of control flits can be defined (e.g., under LLCTRL). In oneexample, some implementations of an HPI interconnect can includetransmission of Viral status in protocol level messages and Poisonstatus in data flits. In one embodiment, HPI protocol level messages andPoison status can be moved to control flits. Since these bits areinfrequently used (e.g., only in the case of errors), removing them fromthe protocol level messages potentially increases flit utilization.Injecting them using control flits can still allow containment of theerrors.

Viral alerts can include an error containment mechanism that resultsfrom a fatal error where it is difficult to avoid error propagationwithout immediately shutting down the system or suffering datacorruption. Viral alert can address the error propagation issue relatingto fatal errors, allowing an infected system to be shutdown gracefullyand in the process cleaning up the system interface and other sharedresources across system partitions.

Viral alerts can be implemented according to an assumption that the HPIinterface is operational and can be used to deliver the errorindication. In HPI, a viral alert can be issued using a special ViralError control flit. When an agent becomes viral, it will preemptoutbound flits and send a Viral Flit to the remote agent. Each protocolagent that detects a fatal error or receives a packet indicating a viralcondition, can transition to a viral condition. Once a viral conditionis set, the condition can last until the agent is reset (a system reset)or some other platform specific mechanism is used to clear out the viralcondition. Once an agent becomes viral, then it is assumed that allfuture packets from that agent are compromised until the platform candetermine the severity of the error. The platform can be responsible forcontrolling the system so that masking viral propagation or clearing ofthe viral state does not compromise error containment. For instance, I/Oproxy entities may stop committing any data to permanent storage or I/Odevices after they have become viral. Additionally, agent(s) that are inviral state may generate new requests to allow error handling softwareto gracefully shutdown the system partition. The mechanisms used by asystem for graceful shutdown can be platform implementation specific andoutside the scope of this specification.

The Viral Alert mechanism can be a global status per partition and maybe cleared on all reset events including warm reset and cold reset.Under Viral Alert, other outbound flits are preempted with the sendingof a Viral Error control flit. FIG. 20 illustrates a representation ofan example of a special Viral Error control flit 2005 on an 8 lane link.As shown in this particular example, the general multi-slot format of aflit is maintained. However, in this example, Slot 0's message headerfields are utilized to communicate the viral condition. The remainingslots can be Slot_NULL as well as the payloads (e.g., interpreted asbeing RSVD).

Link layer logic, in some implementations, can be configured to restrictViral Error control flits from being included in and entering a LinkLayer Retry Queue. Indeed, special control flits can be identified andhandled differently than other flits so that the flit takes priority.Further, the structure of the special flit can be simplified, as in theexample of FIG. 20, to make processing of the control flit moreefficient. As an example, to ensure that a Viral state is not lost inthe event of an error on a Viral Error flit, for instance, a Viral statecan also be carried in a LLCTRL-RETRY.Ack message, among other featuresand examples.

In one embodiment, the Link Layer can additionally define three SpecialDebug message types. A second number of Standard Debug Message types maybe reserved for future general debug packet type extensions. Support ofDebug message types can be implementation or device specific. In oneexample, LLCTRL-DEBUG flits may be sent by the Link Layer when an enabledebug control field is set. When this bit is not set, LLCTRL-DEBUG flitsmay not be transmitted on the link. Debug Packets may be important toexpose internal states of devices connected by HPI that are otherwiseinaccessible. The contents of debug packets can also be implementationspecific. Contents could include things like branch info (source andtarget IPs), time-stamps, indication of an internal event trigger, andso on. The exposed data can be, for instance, by monitoring devices suchas logic analyzers for post-processing and failure analysis. An exampleflit encoding of a Debug message type is illustrated in FIG. 21.

HPI can further support including communication of poison errors usingspecial flits. For instance, a special Poison Error control flit, suchas the one (e.g., 2205) illustrated in the example of FIG. 22, can beused to inject poison into the data payload of a data packet andindicate that previously-transmitted data has been determined to becorrupted or otherwise possess errors. In some instances, a Poison Errorcontrol flit can apply to an immediately preceding flit on the samelink. A special Poison Error control flit can be retry-able, toguarantee that poison information is not lost in the event of a linkerror. When data is to be poisoned, the Link layer control Poison Errorflit is interleaved between the first and second data flits of a packetif the first 32 bytes need to be poisoned. If the second 32 bytes needto be poisoned, the Poison Error flit is interleaved between the secondand third data flits, and so on.

In the particular example of FIG. 22, a Poison Error flit 2205 canencode the poison condition in the opcode of Slot 0, with the remainingslots (and corresponding fields) encoded with Slot_NULL. Further, as inthe example of the Viral Error control flit, payload fields can bezeroed or null and be regarded as RSVD fields.

Small slot fields can be utilized in some link layer control messages.For instance, credit (CRD) and acknowledge (ACK) bits can be included insmall slots of a flit to allow return of a pre-mapped number of credits,such as eight, or number of ACKs, such as 8, among many other examples.In some implementations, credit and acknowledge fields can be fullyencoded so as to designate any denomination of credits or acknowledges.As an example, in a fully encoded credit fields, bits can be utilized asCredit[n] and Acknowledge[n] when a slot is encoded to indicate that itincludes a link-layer credit (LLCRD) message. In some instances, fullencoding credit return fields can potentially improve efficiency byallowing any flit to return the number of credits and the number ofAcknowledges using a total of only 2 bits, but also allowing theirdefinitions to remain consistent when a fully encoded LLCRD return isused.

In one example, for flow control, credit/acknowledge information canflow as part of non-LLCTRL messages. For instance, in oneimplementations, HPI can provide that every header flit includes singlebit fields serving as a mechanism for bulk credit returns or bulkacknowledges. For instance, setting such fields to a “1” can indicates arefund of 8 VNA credits (in the case of the CRD field) or 8 ACKs (in thecase of the ACK field). This can allows credit refunds on any headerflit being sent (with the exception, in some implementations, of LLCTRLmessages).

On other hand, to address credit/acknowledgement return increments otherthan some bulk or pre-defined quantity (e.g., 8), and to deal with theinefficiencies that can be introduced through a limited set of returnincrements, an LLCRD opcode can be provided. The LLCRD opcode canutilize and encode the smallest slot in a header flit (e.g., Slot 2) tocommunicate credit and ACK returns in one or more formats. For instance,in one example, a first format can be provided that allows a return ofany quantity (e.g., from 0-7) of VN0 or VN1 credits for a single messageclass, and any quantity of ACKs (e.g., from 0-255) through bitsdedicated for VN0/1 credit returns (e.g., 3 bits), other bits dedicatedfor ACK return (e.g., 7 bits), and utilizing the header flit's “ACK” bitas Acknowledge[2] to construct, for instance, an 8 bit field. A secondformat can be provided that allows return of any quantity (e.g., from0-255) of VNA credits and any quantity of ACKs (e.g., from 0-255)through dedicated bits (e.g., 7 bits) for VNA returns, and utilizing theheader flit's “CRD” bit as Credit[2], to construct, for instance, an 8bit field. Likewise, dedicated bits (e.g., 7 bits) can be provided forACK returns, and the header flit's “ACK” bit can be utilized toconstruct, for instance, an 8 bit field. These large, fully encoded,fields can allow the transmitter to refund all credits or acknowledgesthat have been accumulated (e.g., buffered) in a single message. Thiscan simplify the accumulated credit count logic, in someimplementations, to a simple “clear”, rather than, for instance, adecrementer on the accumulator.

In one particular example illustrated in FIG. 23, a flit with a formatsuch as that defined in the example of FIG. 17, can be utilized tosupport a LLCRD message. For instance, in this particular example, aLLCRD message may be used in Slot 2 with a pre-designated opcode toreturn VN0, VN1, and VNA credits, as well as ACKs for the Link LayerRetry Queue. A Link Layer Credits (LLCRD) field (e.g., included in“Value 1”) can indicates the format for the LLCRD payload field (e.g.,the examples of FIG. 24 below, among other potential field formats).

FIG. 23 shows a generic format for the slot in LLCRD messaging. FIG. 24illustrates formats for two different LLCRD credit refund messages 2405,2410 that can be supported in Slot 2. For instance, LLCRD format headerscan be provided for both VN0/1 credit returns (e.g., 2405) and VNAcredit returns (e.g., 2410). A Credit Return (CRD) field can be used torefund VNA credits across the link. When set to a first value, thisfield indicates refund of a number of VNA credits, such as 4, 8, or 12.A Credit and Credit Return (CRDCRC) field can also be provided and maybe used in LLCRD format headers, for both VN credit returns and VNAreturns. In a VN LLCRD return format, the credit portion may indicatethe total number of credits returned for the Virtual Network and Messageclass. In a VNA LLCRD return format, the total number of VNA creditsbeing returned may be determined by creating the full VNA return value(e.g. a portion of the credit, CRD, and a second portion of the credit.

In one particular example, such as in the examples of FIG. 24, in aVN0/1 LLCRD return format (e.g., 2405), Credit[N:0] indicates the totalnumber of credits returned for the Virtual Network and Message class. Ina VNA LLCRD return format (e.g., 2410), the total number of VNA creditsbeing returned is determined by creating the Full_VNA[A:0] return value,where Full_VNA[A:0]={Credit[A:B], CRD, Credit[C:0]}. In some instances,a CRD field can also be used to refund VNA credits across the link. Whenset to 1, this field indicates refund of 8 VNA credits. When Slot 2 isencoding a VNA LLCRD return type, the total number of VNA creditsreturned is as described below.

In some implementations of Link layer credit returns, a Channel fieldcan be used to encode the channel for use in credit returns. Thisencoding, in combination with the Virtual Network field, can be used toidentify the Virtual Channel that a credit return maps to. Where aMessage Class has multiple encodings, they will all map to a singleChannel value for crediting. When the credit return type is VNA, theChannel value can be ignored.

As shown in the examples of FIG. 24, ACK fields can also be includedalong with credit return fields in the Link layer message. An ACK fieldmay be used by the Link layer to communicate from a receiver to a sendererror free receipt of flits. As an example, ACK=1 can indicate that anumber of flits have been received without error. When a sender receivesan ACK it can deallocate the corresponding flits from the Link LayerRetry Queue. In the examples of FIG. 24, Acknowledge [A:B] andAcknowledge [C:0] can be used to determine the total number ofAcknowledges being returned by creating the Full_Acknowledge[A:0] returnvalue, where Full_Acknowledge[A:0]={Acknowledge[A:B], ACK,Acknowledge[C:0]}.

In some implementations, some fields may be defined to only allowreturns in certain predefined increments. For instance, in one example,increments can be defined of 1 (for VN0/1), 2/8/16 (for VNA), and 8 (forAcknowledge), among other examples. This means that returning a largenumber of pending Credits or Acknowledges may use multiple returnmessages. It also means that odd numbered return values for VNA andAcknowledge may be left stranded pending accumulation of an evenlydivisible value. Some implementations of HPI may have fully encodedcredit and ACK return fields, allowing an agent to return allaccumulated credits or ACKs for a pool with a single message. Thispotentially improves link efficiency and also potentially simplifieslogic implementation (return logic can implement a “clear” signal ratherthan a full decrementer).

In some implementations, credits for buffers in VN0 and VN1 can bereturned on a per packet basis for each message class. Hence, eachbuffer for each credit in VN0/VN1 may be sized to cover the bufferrequirements for the largest packet size that can use the credit. Insome instances, this can provide the most efficient method of creditreturn for these channels.

In some implementations, because of the shared resource and a variety ofmessage sizes that may be allocated/deallocated, it may not be efficientto use packet credit/debit for VNA. Instead, in some instances a flitcredit/debit scheme can be used for VNA. Each flit can represents 1 flitof receiver buffer space with the credits shared by all message classesthat can transmit on VNA. The encodings for the credit return can bedescribed in relation to “LLCRD-Type.” Further, as noted above, a flitsent using VNA may contain up to 3 headers (one per slot), in someimplementations. The receiver may not return a VNA credit until allthree slots have been freed from the receiver queue, among otherpotential conditions or implementations.

In HPI, a large CRC baseline can be used to provide error detection on alarger multi-slot flit. In some cases, the CRC baseline can even improveerror detection over traditional error detection, including other CRC,implementation. In one example, as shown in the example multi-slot flitof FIG. 17, 16 bits can be dedicated per flit to CRC. As a result of thelarger CRC, a larger payload may also be utilized. The 16 bits of CRC incombination with a polynomial used with those bits improves errordetection.

The value of a CRC field of a flit can be generated from a bit data maskrepresenting the payload of the flit. The CRC value can be generatedbased on a particular polynomial. In one example, such as the example ofFIG. 17, a 192 bit flit can include a 16 bit CRC field. Accordingly, a176 (non-CRC) bit data masks can be used with an XOR tree (based on theselected polynomial) to produce the 16 CRC bits. Note that the flitpayload bits can map vertically across UI within lanes. This maymaintain burst error protection.

Link layer logic of an agent can be used to generate the CRC value for aflit. The generated CRC value can be encoded in the CRC field of itscorresponding flit. The flit can then be sent over a serial data link toa receiver. The Link layer logic of the receiver can apply the samepolynomial used to generate the CRC value to the CRC value identified inthe CRC field of a received flit. The receiver can generate a checksumfrom the CRC value and compare the result against the remaining, non-CRCflit data to determine whether any bit errors resulted from thetransmission of the flit over the link. If an error exists on a lane,the checksum should produce a mismatched result, indicating one or morebit errors, among other examples. Additionally, in some implementations,the CRC code may be inverted after generation at the transmitter andinverted again before checking at the receiver, for instance, to preventa flit of potentially all 0's or all 1's from passing the CRC check.

The accuracy of a CRC can be based on the length of the CRC value andthe number of lanes utilized to send the flit. For instance, thepotential error burst rate can increase as the number of lanes used inthe link decreases. This can introduce additional complexity in HPIsystems supporting partial width transmitting states, for instance.

In some cases, the CRC polynomial can be designed based on the maximumtotal length of the block to be protected (data+CRC bits), the desirederror protection features, and the type of resources for implementingthe CRC, as well as the desired performance. In some examples, a CRCpolynomial can be derived from either an irreducible polynomial or anirreducible polynomial times the factor to detect all errors affectingan odd number of bits. However, in some instances, choosing a reduciblepolynomial can result in missed errors, due to the rings having zerodivisors, etc.

In one example implementation, a primitive polynomial can be utilized asthe generator for a CRC code to provide a resulting CRC code withmaximal total block length. For instance, if r is the degree of theprimitive generator polynomial, then the maximum block length can be(2^(r)−1), and the associated code can be able to detect any single-bitor double-bit errors. In another implementations, a generator polynomialg(x)=p(x)(1+x) can be utilized, where p(x) is a primitive polynomial ofdegree (r−1), a maximum block length is (2 ^(r-1)−1), and the resultingcode able to detect single, double, and triple errors, among otherexamples.

A polynomial g(x) that admits other factorizations may be utilized so asto balance the maximal total blocklength with a desired error detectionpower. For instance, BCH codes are a powerful class of such polynomials.Regardless of the reducibility properties of a generator polynomial ofdegree r, if it includes the “+1” term, the code can be able to detecterror patterns that are confined to a window of r contiguous bits. Thesepatterns can be referred to as “error bursts”. Such error bursts canresult, for instance, when an error affects one of the lanes of a link.

In one particular example, a 192 bit flit can include a 16 bit CRCfield. A 16 bit CRC polynomial can be implemented in Link layer logic togenerate values of the CRC field. In one embodiment, the polynomial canpermit detection of 1-bit, 2-bit, 3-bit, and 4-bit errors, detection oferrors of burst length 16 or less, with only 1:2¹⁶ of all other errorconditions going undetected. In one particular example, the 16 bit CRCpolynomial utilized can be 0x1b7db(x¹⁶+x¹⁵+x¹³+x¹²+x¹⁰+x⁹+x₈+x⁷+x⁶+x₄+x³+x¹+1) to provide an XOR depth of93, 4 bit random error detection, and 16 bit burst protection, amongother potential implementations and alternatives.

As noted above, the error detection properties of a CRC can be based onthe length of the CRC. For instance, in the case of a 16 bit CRCprotecting a 192 bit flit, error detection can capture errors of burstlength 16 or less. Such an implementation can effectively capturesubstantially all single-lane errors that could appear on a linkemploying 12 or more lanes to transmit the flit. However, for links orlink states utilizing fewer lanes to transmit the flit, a 16 bit CRC caninsufficient. For instance, a malfunction or error on a single lane ofan 8 lane link can result in errors with burst lengths as high as 24bits.

In some implementations, rolling CRC can be employed to extend the errordetection properties provided through a flit format dedicating a fixednumber of bits to a CRC. In one embodiment, a rolling CRC based on twoor more CRC polynomials and two or more corresponding XOR trees can beprovided (at least on some HPI-compliant devices). For a sequence of twoor more flits, a first CRC code can be generated by the first polynomialfor a first flit. For the second flit, the second CRC polynomial can beused to generate a second CRC code, and so on. The first CRC codegenerated by the first polynomial can be XORed with the second CRC codegenerated by the second polynomial to produce a rolling CRC value. Therolling CRC value can be provided to the receiver (e.g., in the CRCfield of a flit). The rolling CRC value can reflect effectively multipleflits' worth of data improving the ability of the system to detect biterrors of higher burst lengths while no sacrificing additional payloadfor extra CRC bits, among other examples.

In one embodiment, a rolling CRC based on two CRC-16 equations isutilized. Two 16 bit polynomials may be used, the polynomial from HPICRC-16 and a second polynomial. The second polynomial has the smallestnumber of gates to implement a 32 bit rolling CRC algorithm thatrealizes the properties of 1) detection of all 1-7 bit errors; 2) perlane burst protection in x8 link widths (to covers 24 UI in a 8 lanelength); 3) detection of all errors of burst length 16 or less; and 4)only 1:2³² of all other error conditions go undetected. In one example,the second polynomial can comprise 0x10147 (x¹⁶+x⁸+x⁶+x²+x¹+1). Otherexample implementations can utilize the principles illustrated above,such as implementations tailored to flits of a different length, orsystems with links supporting a different (higher or lower) minimum lanewidth with corresponding defined polynomials and CRC field lengths inaccordance with the implementations' particular designs.

Protocol Layer

The HPI Coherence Protocol also may ensure the forward progress ofcoherence requests made by an agent to an address in the coherent memoryspace. Certainly, transactions may eventually be satisfied and retiredfor proper system operation. The HPI Coherence Protocol, in someembodiments, may have no notion of retry for resolving resourceallocation conflicts. Thus, the protocol itself may be defined tocontain no circular resource dependencies, and implementations may takecare in their designs not to introduce dependencies that can result indeadlocks. Additionally, the protocol may indicate where designs areable to provide fair access to protocol resources.

Logically, the HPI Coherence Protocol, in one embodiment, can includethree items: coherence (or “cache” or “caching”) agents, home agents,and the HPI interconnect fabric connecting the agents. Coherence agentsand home agents can work together to achieve data consistency byexchanging messages over the interconnect. The link layer 610 a,b andits related description can provide the details of the interconnectfabric including how it adheres to the coherence protocol'srequirements, discussed herein. (It may be noted that the division intocoherence agents and home agents is for clarity. A design may containmultiple agents of both types within a socket or even combine agentsbehaviors into a single design unit, among other examples.)

In one embodiment, home agents can be configured to guard physicalmemory. Each home agent can be responsible for a region of the coherentmemory space. Regions may be non-overlapping, in that a single addressis guarded by one home agent, and together the home agent regions in asystem cover the coherent memory space. For instance, each address canbe guarded by at least one home agent. Therefore, in one embodiment,each address in a HPI system's coherent memory space can map to exactlyone home agent.

Home agents in the HPI Coherence Protocol, in one embodiment, can beresponsible for servicing requests to the coherent memory space. Forread (Rd) requests, home agents may generate snoops (Snp), process theirresponses, send a data response, and send a completion response. Forinvalidation (Inv) requests, home agents may generate necessary snoops,process their responses, and send a completion response. For writerequests, home agents may commit the data to memory and send acompletion response.

Home agents may provide snoops in the HPI Coherence Protocol and processsnoop responses from coherence agents. Home agents can also processforward requests, which are a special snoop response, from coherenceagents for conflict resolution. When a home agent receives a forwardrequest, it may send a forward response to the coherence agent thatgenerated the forward request (i.e., the agent that detected aconflicting snoop request). Coherence agents can use the ordering ofthese forward responses and completion responses from the home agent toresolve conflicts.

A coherence agent may issue supported coherence protocol requests.Requests may be issued to an address in the coherent memory space. Datareceived for read requests (Rd) except RdCur may be consistent. Data forRdCur requests may have been consistent when the data packet wasgenerated (although it may have become out of date during delivery).Table 5 shows an exemplary, non-exhaustive list of potential supportedrequests:

TABLE 5 Name Semantics Cache State RdCode Request a cache line in F or Sstate. F or S RdData Request a cache line in E, F, or S state. F or SRdMigr Request a cache line in M, E, F, or S state. M and (F or S) RdInvRequest a cache line in E state. If line was previously E cached in Mstate, the line will be written to memory before E data is delivered.RdInvOwn Request a cache line in M or E state. M RdCur Request anuncacheable snapshot of a cache line. InvItoE Request exclusiveownership of a cache line without M or E receiving data. InvItoM Requestexclusive ownership of a cache line without M or E receiving data andwith the intent of performing a writeback soon afterward. InvXtoI Flusha cache line from all caches. Requesting agent is to invalidate the linein its cache before issuing this request. WbMtoI Write a cache line in Mstate back to memory and M invalidate the line in the cache. WbMtoSWrite a cache line in M state back to memory and M and S transition lineto S state. WbMtoE Write a cache line in M state back to memory and Mand E transition line to E state. WbMtoIPtl Write a cache line in Mstate back to memory, according to M a byte-enable mask, and transitionline to I state. WbMtoEPtl Write a cache line in M state back to memory,according to M and E a byte-enable mask, transition line to E state, andclear the line's mask in the cache. EvctCln Notification to home agentthat a cache line in E state was E invalidated in the cache. WbPushMtoISend a line in M state to home agent and invalidate the line M in thecache; home agent may either write the line back to memory or send it toa local cache agent with M state. WbFlush Request that home flush writesto implementation-specific addresses in its memory hierarchy. No data issent with the request.

HPI can support a Coherency protocol making use of principles of theMESI protocol. Each cache line can be marked with one or more supportedstates (e.g., coded in the cache line). A “M” or “Modified” state canindicate that the cache line value has been modified from that valuewhich is in main memory. A line in the M-state is only present in theparticular and the corresponding cache agent can be required to writethe modified data back to memory at some time in the future, forinstance, before permitting any other read of the (no longer valid) mainmemory state. A writeback can transition the line from the M-state tothe E-state. The “E” or “Exclusive” state can indicate that the cacheline is only present in the current cache but that its value matchesthat in main memory. The cache line in E-state can transition to theS-state at any time in response to a read request or may be changed tothe M-state by writing to the line. The “S” or “Shared” state canindicates that the cache line may be stored in other caches of themachine and has a value that matches that of the main memory. The linemay be discarded (changed to the I-state) at any time. The “I” or“Invalid” state can indicate that a cache line is invalid or unused.Other state can also supported in HPI, such as an “F” or “Forward”shared state that indicates that the particular shared line value is tobe forwarded to other caches that are to also share the line, amongother examples.

Table 6 include exemplary information that can be included in someCoherence protocol messages, including snoop, read, and write requests,among other examples:

TABLE 6 Field Usage cmd Message command (or name or opcode). addrAddress of a coherent cache line. destNID NID of destination (home orcoherence) agent. reqNID NID of requesting coherence agent. peerNID NIDof coherence agent that sent the (forward request) message. reqTID ID ofthe resource allocated by the requesting agent for the transaction, alsoknown as RTID. homeTID ID of the resource allocated by the home agent toprocess the request, also known as HTID. data A cache line of data. maskByte mask to qualify the data.

Snoop messages may be generated by home agents and directed towardcoherence agents. A snoop (SNP) virtual channel can be used for snoopsand, in one embodiment, are the only messages that use the SNP virtualchannel. Snoops can include the requesting agent's ND and the RTID itallocated for the request in case the snoop results in data being sentdirectly to the requesting agent. Snoops, in one embodiment, can alsoinclude the HTID allocated by the home agent to process the request. Thecoherence agent processing the snoop may include the HTID in the snoopresponse it sends back to the home agent. Snoops may, in some instance,not include the home agent's ND because it may be derived from theincluded address, which the targeted coherence agent does when sendingits response. Fanout snoops (those with “SnpF” prefix) may not include adestination ND because the Routing Layer is responsible for generatingthe appropriate snoop messages to all peers in the fanout region. Anexemplary list of snoop channel messages is listed Table 7:

TABLE 7 Command Semantics Fields SnpCode Snoop to get data in F or Sstate. cmd, SnpData Snoop to get data in E, F, or S state. addr, SnpMigrSnoop to get data in M, E, F, or S state. destNID, SnpInv Snoop toinvalidate the peer's cache, flushing any M copy to reqNID, memory.reqTID, SnpInvOwn Snoop to get data in M or E state. homeTID SnpCurSnoop to get an uncacheable snapshot of a cache line. SnpFCode Snoop toget data in F or S state; Routing layer to handle cmd, distribution toall fanout peers addr, SnpFData Snoop to get data in E, F, or S state;Routing layer to handle reqNID, distribution to all fanout peers reqTID,SnpFMigr Snoop to get data in M, E, F, or S state; Routing layer tohandle homeTID distribution to all fanout peers SnpFInvOwn Snoop to getdata in M or E state; Routing layer to handle distribution to all fanoutpeers. SnpFInv Snoop to invalidate the peer's cache, flushing any M copyto memory; Routing layer to handle distribution to all fanout peers.SnpCur Snoop to get an uncacheable snapshot of a cache line; Routinglayer to handle distribution to all fanout peers.

HPI may also support non snoop requests that they may issue to anaddress, such as those implemented as non-coherent requests. Examples ofsuch requests can include a non-snoop read to request a read-only lineform memory, a non-snoop write to write a line to memory, and a write aline to memory according to a mask, among other potential examples.

In one example, four general types of response messages can be definedin the HPI Coherence Protocol: data, completion, snoop, and forward.Certain data messages can carry an additional completion indication andcertain snoop responses can carry data. Response messages may use theRSP virtual channel, and the communication fabric may maintain propermessage delivery ordering among ordered completion responses and forwardresponses.

Table 8 includes a listing of at least some potential response messagessupported by an example HPI Coherence Protocol:

TABLE 8 Name Semantics Fields Data_M Data is M state. cmd, Data_E Datais E state. destNID, Data_F Data is F state. reqTID, Data_SI Dependingupon request, data in S state or uncacheable data “snapshot” data.Data_M Data is M state with an ordered completion response. Data_E Datais E state with an ordered completion response. Data_F Data is F statewith an ordered completion response. Data_SI Depending upon request,data in S state or uncacheable “snapshot” data, with an orderedcompletion response. CmpU Completion message with no orderingrequirements. cmd, CmpO Completion message to be ordered with forwarddestNID, responses. reqTID RspI Cache is in I state. cmd, RspS Cache isin S state. destNID, RspFwd Copy of cache line was sent to requestingagent, cache homeTID state did not change. RspFwdI Copy of cache linewas sent to requesting agent, cache transitions to I state. RspFwdS Copyof cache line was sent to requesting agent, cache transitions to Sstate. RspIWb Modified line is being implicitly written back to memory,cmd, cache was transitioned to I state. destNID, RspSWb Modified line isbeing implicitly written back to memory, homeTID, cache was transitionedto S state. data RspFwdIWb Modified line is being implicitly writtenback to memory, copy of cache line was sent to requesting agent, cachewas transitioned to I state. RspFwdSWb Modified line is being implicitlywritten back to memory, copy of cache line was sent to requesting agent,cache was transitioned to S state. RspCnflt Peer has an outstandingrequest to same address, is cmd, requesting an ordered forward response,and has allocated destNID, a resource for the forward. homeTID, peerNID

In one example, data responses can target a requesting coherence agent.A home agent may send any of the data responses. A coherence agent maysend only data responses not containing an ordered completionindication. Additionally, coherence agents may be limited to sendingdata responses only as a result of processing a snoop request. Combineddata and completion responses may always be of the ordered-completiontype and can be kept ordered with forward responses by the communicationfabric.

The HPI Coherence Protocol can use the general unordered completionmessage and a coherence-specific ordered completion message. A homeagent may send completion responses to coherent requests and completionresponses can be typically destined for a coherence agent. The orderedcompletion response can be kept ordered with forward responses by thecommunication fabric.

Snoop responses may be sent by coherence agents, specifically inresponse to processing a snoop request, and target the home agenthandling the snoop request. The destNID is usually a home agent(determined from the address in the snoop request) and the included TIDis for the home agent's resource allocated to process the request. Snoopresponses with “Wb” in the command are for implicit writebacks ofmodified cache lines, and they carry the cache line data. (Implicitwritebacks can include those a coherence agent makes due to anotheragent's request, whereas the other requests are made explicitly by thecoherence agent using its request resources.)

Coherence agents can generate a forward request when a snoop requestconflicts with an outstanding request. Forward requests target the homeagent that generated the snoop, which is determined from the address inthe snoop request. Thus, the destNID is a home agent. The forwardrequest can also include the TID for the home agent's resource allocatedto process the original request and the NID of the coherence agentgenerating the forward request

The HPI Coherence Protocol can support a single forward response,FwdCnfltO. Home agents can send a forward response for every forwardrequest received and to the coherence agent in the forward request'speerNID field. Forward responses carry the cache line address so thecoherence agent can match the message to the forward resource itallocated. Forward response message can carry the requesting agent's NIDbut, in some cases, not the requesting agent's TID. If a coherence agentwants to support cache-to-cache transfers for forward responses, it cansave the requesting agent's TID when processing the snoop and send aforward request. To support conflict resolution, the communicationfabric may maintain ordering between the forward response and allordered completions sent before it to the same destination coherenceagent.

In some systems, home agent resources are pre-allocated in that “RTIDs”represent resources in the home agents and the caching agents allocateRTIDs from system-configured pools when generating new coherencerequests. Such schemes can limit the number of active requests anyparticular caching agent can have to a home agent to the number of RTIDsit was given by the system, effectively slicing up home resourcesstatically among caching agents. Such schemes can result inefficientallocation of resources and properly sizing a home agent to supportrequest throughput can become impractical for large systems, among otherpotential issues. For instance, such schemes can force RTID poolmanagement upon the caching agents. Additionally, in some systems, acaching agent may not reuse the RTID until the home agent has completelyprocessed the transaction. Waiting until a home agent completes allprocessing, however, can unnecessarily throttle caching agents.Additionally, certain flows in the protocol can involve caching agentsholding onto RTIDs beyond the home agent release notification, furtherthrottling their performance, among other issues.

In one implementation, home agents can be allowed to allocate theirresources as requests arrive from cache agents. In such instances, homeagent resource management can be kept separate from coherence agentlogic. In some implementations, home resource management and coherenceagent logic can be at least partially intermingled. In some instances,coherence agents can have more outstanding requests to a home agent thanthe home agent can simultaneously handle. For instance, HPI can allowrequests to queue up in the communication fabric. Further, to avoiddeadlocks caused by the home agent blocking incoming requests untilresources become available, the HPI Coherence protocol can be configuredto ensure that other messages can make progress around blocked requeststo ensure that active transactions reach completion.

In one example, resource management can be supported by allowing anagent receiving a request to allocate resources to process it, the agentsending the request allocating respective resources for all responses tothe request The HTID can represent the resource that a home agentallocates for a given request included in some protocol messages. TheHTID (along with RNID/RTID) in snoop requests and forward responses canbe used to support responses to a home agent as well as data forwardingto a requesting agent, among other examples. Further, HPI can supportthe ability of an agent to send an ordered complete (CmpO) early, thatis, before the home agent is finished processing the request, when it isdetermined to be safe for a requesting agent to reuse its RTID resource.General handling of snoops with similar RNID/RTID can also be defined bythe protocol.

In one illustrative example, when a particular request's tracker stateis busy, a directory state can be used to determine when the home agentmay send a response. For instance, an Invalid directory state can allowa response to be sent, except for RdCur requests which indicates thereare no outstanding snoop responses. An Unknown directory state candictate that all peer agents have been snooped and all their responsesgathered before a response can be sent. The Exclusive directory statecan dictate that the owner be snooped and all responses gathered beforea response is sent, or if the requesting agent is the owner then aresponse may immediately be sent. The Shared directory state can specifythat an invalidating request (e.g., RdInv* or Inv*) has snooped all peeragents and gathered all snoop responses. When a given request's trackerstate is writeback buffered (WbBuffered), the home agent may send a dataresponse. When the request's tracker state is DataSent (indicating thehome agent has already sent a data response) or DataXfrd (indicating apeer transferred a copy of the line), the home agent may send thecompletion response.

In instances such as those described above, a home agent may send dataand completion responses before all snoop responses have been gathered.The HPI interface allows these “early” responses. When sending earlydata and completions, the home agent may gather all outstanding snoopresponses before releasing the resource it allocated for the request.The home agent can also continue blocking further standard requests tothe same address until all snoop responses have been gathered, thenreleasing the resource. A home agent sending a response message from aBusy or WbBuffered state can use a sub-action table (e.g., included in aset of protocol tables embodying the formal specification of the HPICoherence protocol) for which message to send and use a sub action tablefor how to update the directory state, among other examples. In somecases, an early completion can be performed without pre-allocation by ahome node.

In one embodiment, HPI Coherence protocol can omit the use of either orboth pre-allocated home resources and ordered request channels. In suchimplementations, certain messages on the HPI RSP communication channelcan be ordered. For instance, specifically “ordered completion” and“forward response” messages, can be provided, that can be sent from thehome agent to the coherence agent. Home agents can send an orderedcompletion (CmpO or Data_*_CmpO) for all coherent read and invalidationrequests (as well as other requests, such as a NonSnpRd requests, thatare not involved in cache-coherence conflicts).

Home agents can send forward responses (FwdCnfltO) to coherence agentsthat send forward requests (RspCnflt) to indicate a conflict. Acoherence agent can generate a forward request whenever it has anoutstanding read or invalidation request and detects an incoming snooprequest to the same cache line as the request. When the coherence agentreceives the forward response, it checks the current state of theoutstanding request to determine how to process the original snoop. Thehome agent can sent the forward response to be ordered with a complete(e.g., CmpO or Data_*_CmpO). The coherence agent can utilize informationincluded in the snoop to aid the coherence agent in processing a forwardresponse. For instance, a forward response may not include any “type”information and no RTID. The nature of the forward response can bederived from information obtained from the preceding snoop(s). Further,a coherence agent may block outstanding snoop requests when all of its“forward resources” are waiting for forward responses. In someimplementations, each coherence agent can be designed to have at leastone forward resource.

In some implementations, communication fabric requirements can be uponthe Routing Layer. In one embodiment, the HPI Coherence protocol has onecommunication fabric requirement that is specific to the Routing Layer.The coherence protocol can depend upon the routing layer to convert afanout snoop (SnpF* opcodes—Snoop (SNP) Channel Messages”) into theappropriate snoops for all of the request's peers in the fanout set ofCoherence Agents. The fanout set is a configuration parameter of theRouting Layer that is shared by the Protocol Layer. In this coherenceprotocol specification it is described as a Home Agent configurationparameter.

In some implementations above, the HPI Coherence Protocol can utilizesfour of the virtual channels: REQ, WB, SNP, and RSP. The virtualchannels can be used to unwind dependency cycles and avoid deadlock. Inone embodiment, every message can be delivered without duplication onall virtual channels and an ordering requirement upon the RSP virtualchannel.

In some implementations, the communication fabric can be configured topreserve an ordering among certain completion messages and the FwdCnfltOmessage. The completion messages are the CmpO message and any datamessage with CmpO attached (Data_*_CmpO). Together, all of thesemessages are the “ordered completion responses.” The conceptualrequirement between ordered completion responses and the FwdCnfltOmessage is that a FwdCnfltO does not “pass” an ordered completion. Morespecifically, if a home agent sends an ordered completion responsefollowed by a FwdCnfltO message and both messages are destined for thesame coherence agent, then the communication fabric delivers the orderedcompletion response before the FwdCnfltO, among other potentialexamples.

It should be appreciated that while some examples of the protocol floware disclosed herein, the described examples are merely intended to givean intuitive feel for the protocol and do not necessarily cover allpossible scenarios and behaviors the protocol may exhibit.

A conflict may occur when requests to the same cache-line address frommore than one coherence agent occur around the same time. As a specificexample, a conflict can occur when a snoop for a coherence agent'sstandard request arrives at a peer coherence agent with an outstandingrequest to the same address. Because each snoop may end up in aconflict, a single request can have multiple conflicts. Resolvingconflicts may be a coordinated effort among the home agent, thecoherence agents, and the communication fabric. However, the primaryresponsibility lies with the coherence agents detecting conflictingsnoops.

In one embodiment, home agents, coherence agents, and communicationfabric can be configured to assist in successfully resolving conflicts.For example, home agents may have outstanding snoops for only onerequest per address at a time, such that, for a given address, a homeagent may have outstanding snoops for only one request. This can serveto exclude the possibility of race conditions involving two requestsconflicting with each other. It can also ensure that a coherence agentwill not see another snoop to the same address after it has detected aconflict but not yet resolved it.

In another example, when a coherence agent processes a snoop with anaddress matching an active standard request, it can allocates a forwardresource and sends a forward request to the home agent. A coherenceagent with an outstanding standard request that receives a snoop to thesame address can responds with a RspCnflt snoop response. This responsecan be a forward request to the home agent. Because the message is arequest, before sending it the coherence agent can allocate a resourceto handle the response that the home agent will send. (The coherenceprotocol allows blocking conflicting snoops when the coherence agent hasrun out of forward resources, in some instances.) The coherence agentmay store information about the conflicting snoop to use when processingthe forward response. After detecting a conflict and until processingthe forward response, a coherence agent may be guaranteed to not seeanother snoop to the same address.

In some examples, when a home agent receives a forward request, it doesnot record the snoop response. Instead, the home agent can send aforward response to the conflicting coherence agent. A forward request(RspCnflt), in one example, looks like a snoop response but the homeagent does not treat it as one. It does not record the message as asnoop response, but instead sends a forward response. Specifically, forevery forward request (RspCnflt) a home agent receives, it sends aforward response (FwdCnfltO) to the requesting coherence agent.

The HPI Communication Fabric orders forward responses and orderedcompletions between the home agent and the targeted coherence agent. Thefabric can thereby serve to differentiate an early conflict from a lateconflict at the conflicting coherence agent. From a system-levelperspective, an early conflict occurs when a snoop encounters a requestthat the home agent has not yet processed, and a late conflict occurswhen a snoop encounters a request that the home agent has alreadyprocessed. From a home agent's perspective, an early conflict is when asnoop for the currently active request encounters a request that thehome agent has not yet received or started processing, and a lateconflict is when the snoop encounters a request it has alreadyprocessed. In other words, a late conflict is with a request to whichthe home agent has already sent a completion response. Thus, when a homeagent receives a forward request for a late conflict, it will havealready sent the completion response to the conflicting agent'soutstanding request. By ordering the forward responses and orderedcompletion responses from home agent to the coherence agent, thecoherence agent can determine whether the conflict was early or late bythe processing state of its conflicting request.

When a coherence agent receives a forward response, it uses the state ofits conflicting request to determine whether the conflict was early orlate and when to process the original snoop. Because of thecommunication fabric's ordering requirement, the state of theconflicting request indicates whether the conflict was early or late. Ifthe request state indicates the completion has been received then it wasa late conflict, otherwise it was an early conflict. Alternatively, ifthe request state indicates the request is still waiting for itsresponse(s) then it was an early conflict, otherwise it was a lateconflict. The type of conflict determines when to process the snoop:From a coherence agent's perspective, an early conflict means the snoopis for a request being processed before the agent's conflicting request,and a late conflict means the snoop is for a request being processedafter the agent's conflicting request. Given that ordering, for an earlyconflict, the coherence agent immediately processes the original snoop;and for a late conflict, the coherence agent waits until the conflictingrequest has received its data (for reads) and its processor has had anopportunity to act upon the finished request before processing thesnoop. When the conflicting snoop is processed, the coherence agent willgenerate a snoop response for the home agent to finally record.

All conflicts with writeback requests can be late conflicts. A lateconflict from the coherence agent's perspective is when the agent'srequest is processed before the snoop's request. By this definition allconflicts with writeback requests can be treated as late conflictsbecause the writeback is processed first. Otherwise, data consistencyand coherency could be violated if the home agent were to process therequest before the writeback commits to memory. Because all conflictswith writebacks are deemed late conflicts, coherence agents can beconfigured to block conflicting snoops until an outstanding writebackrequest completes. Further, writebacks can also block the processing offorwards. Blocking forwards by an active writeback can also beimplemented as a protocol requirement for supporting uncacheable stores,among other examples.

When a coherence agent receives a request to snoop its cache, it canfirst check if the coherence protocol will allow it, and then it mayprocess the snoop and generate a response. One or more state tables canbe defined within a set of state tables that defines the protocolspecification. One or more state table can specify when a coherenceagent may process a snoop and whether it will snoop the cache or insteadgenerate a conflict forward request. In one example, there are twoconditions under which a coherence agent processes a snoop. The firstcondition is when the coherence agent has a REQ request (Rd* or Inv*) tothe snoop address and it has an available forward resource. In thiscase, the coherence agent must generate a forward request (RspCnflt).The second condition is when the coherence agent does not have a REQ,Wb*, or EvctCln request to the snoop address. A state table can definehow a coherence agent is to process the snoop in accordance with suchrespective conditions. In one example, under other conditions, thecoherence agent can block the snoop until either a forward resourcebecomes available (first condition) or the blocking Wb* or EvctClnreceives its CmpU response (second condition). Note that NonSnp*requests may not affect snoop processing and a coherence agent candisregard NonSnp* entries when determining how to process or block asnoop.

When generating a forward request, a coherence agent can reserve aresource for the forward response. The HPI Coherence protocol, in oneexample, may not require a minimum number of forward response resources(beyond having at least one) and can allow a coherence agent to blocksnoops when it has no forward response resources available.

How a coherence agent processes a snoop in its cache can depend upon thesnoop type and current cache state. For a given snoop type and cachestate, however, there may be many allowed responses. For example, acoherence agent with a full modified line that receives anon-conflicting SnpMigr (or is processing a forward response after aSnpMigr) may do any of the following: Downgrade to S, send implicitwriteback to Home and Data_F to requestor; Downgrade to S, send implicitwriteback to Home; Downgrade to I, send Data_M to requestor; Downgradeto I, send implicit writeback to Home and Data_E to requestor; Downgradeto I, send implicit writeback to Home; among potentially other examples.

The HPI Coherence protocol allows a coherence agent to store modifiedlines with partial masks in its cache. However, all rows in for M copiescan require a Full or Empty mask. The HPI Coherence protocol, in oneexample, may restrict implicit writeback of partial lines. A coherenceagent wishing to evict a partial M line due to a snoop request (orforward response) can first initiate an explicit writeback and block thesnoop (or forward) until the explicit writeback is completed.

Saving information for forward responses: The HPI Coherence Protocol, inone embodiment, allows a coherence agent to store forward responseinformation separate from the outgoing request buffer (ORB). Separatingthe information allows the ORB to release ORB resources and RTID whenall responses are gathered, regardless of the entry being involved in aconflict. State tables can be utilized to specify what information tostore for forward responses and under what conditions.

Forward responses in the HPI Coherence protocol can contain the address,the requesting agent's NID, and the home TID. It does not contain theoriginal snoop type or the RTID. A coherence agent may store the forwardtype and the RTID if it wishes to use them with the forward response,and it may use the address to match the incoming forward response withthe proper forward entry (and to generate the home NID). Storing theforward type may be optional. If no type is stored, the coherence agentcan treat a forward response as having FwdInv type. Likewise, storingthe RTID can be optional and may only occur when the coherence agent isto support cache-to-cache transfers when processing forward responses.

As noted above, coherence agents can generate a forward request when asnoop request conflicts with an outstanding request. Forward requeststarget the home agent that generated the snoop, which can be determinedfrom the address in the snoop request. Thus, the destNID can identify ahome agent. The forward request can also include the TID for the homeagent's resource allocated to process the original request and the NIDof the coherence agent generating the forward request.

In one embodiment, a coherence agent can block forwards for writebackrequests to maintain data consistency. Coherence agents can also use awriteback request to commit uncacheable (UC) data before processing aforward and can allow the coherence agent to writeback partial cachelines instead of protocol supporting a partial implicit writeback forforwards. Indeed, in one embodiment, a coherence agent can be allowed tostore modified lines with partial masks in its cache (although M copiesare to include a Full or Empty mask).

In one example, early conflicts may be resolved by a forward responseencountering an outstanding standard request before it has received anyresponse. A corresponding protocol state table can specify, in oneexample, that a forward response can be processed as long as thestandard request entry is still in ReqSent state. Late conflicts can beresolved by a forward response arriving after the outstanding requesthas received its completion response. When this occurs either therequest will have finished (already received its data or was an Inv*request) or the entry is in its RcvdCmp state. If the request is stillwaiting for its data, then the coherence agent must block the forwarduntil the data is received (and used). If the conflicting Rd* or Inv*request has finished, then the forward response may be processed as longas the coherence agent has not initiated an explicit writeback of thecache line. It can be permissible for a coherence agent to initiate anexplicit writeback while it has a forward response (or snoop request) tothe same address, thus allowing partial lines (e.g. Snoop Requests toPartially Modified Lines”) or uncacheable stores to be properlycommitted to memory.

Turning to FIG. 25, a first example is illustrated of an exampleconflict management scheme. A first cache (or coherence) agent 2505 cansend a read request for a particular line of data to home agent 2510resulting in a read of memory 2515. Shortly after the read request bycache agent 2505, another cache agent 2520 makes a request for ownership(RFO) of the same line. However, the home agent 2510 has sent theData_S_CmpO to the first cache agent 2505 prior to receiving the RFOfrom cache agent 2520. The RFO can result in a snoop (SnpFO) being sentto the cache agent 2505 (as well as other cache agents), the snoop beingreceived by the first cache agent 2505 prior to receiving the completeData_S_CmpO. The cache agent 2505, upon receiving the snoop SnpO canidentify a potential conflict involving the line of memory requested inits original read request and can notify the home agent 2510 of theconflict by responding to the SnpO with a forward responses conflictmessage (RspCnflt). The home agent 2510 can respond to the forwardresponse RspCnflt by sending a forward response (FwdCnfltO). The cacheagent 2505 can then receive the shared data complete Data_S_CmpO andtransition from an I state to S state. The forward response FwdCnfltOcan then be received by the cache agent 2505 and cache agent 2505 candetermine how to respond to the forward response message FwdClfltO basedon the snoop SnpFO that triggered the sending of the forward responseRspCnflt. In this example, the cache agent 2505 can consult a protocolstate table, for instance, to determine a response to the forwardresponse message FwdClfltO. In the particular example of FIG. 25, thecache agent 2505 can transition to an F-state and send the S-copy of thedata it received from the home agent 2510 in the Data_S_CmpO message tothe second cache agent 2520 in a Data_F message. The first cache agent2505 can also send a response message RspFwdS to the home agent 2510notifying the home agent 2510 that the first cache agent has shared itscopy of the data with the second cache agent.

In another illustrative example, shown in the simplified flow diagram ofFIG. 26, the first cache agent 2505 can send a request for ownership(RFO) of a particular line of memory to the home agent 2510. Shortlythereafter, a second cache agent can send a RdInvOwn message to the homeagent 2510 as a request for the same line of memory in an M state. Inconnection with the RFO message from the first cache agent 2505, thehome agent 2510 can send a snoop (SnpFO) to the second cache agent 2520which the second cache agent 2520 can identify as a potential conflictinvolving the line of memory subject to both the RFO and RdInvOwnrequests. Accordingly, the second cache agent 2520 can send a forwardrequest RspCnflt to the home agent 2520. The home agent 2520 responds tothe second cache agent's 2520 forward request with a forward response.The second cache agent 2520 determines a response to the forwardresponse based on information contained in the original snoop SnpFO. Inthis example, the second cache agent 2520 responds with a snoop responseRspI indicating that the second cache agent 2520 is in an I-state. Thehome agent 2510 receives the snoop response RspI and determines that itis appropriate to send the data complete exclusive (Data_E_CmpO) to thefirst cache agent 2505, which causes the first cache agent to transitionto an E state. With the complete sent, the home agent 2510 can thenbegin responding to the second cache agent's RdInvOwn request, beginningwith a snoop request SnpInvO of the first cache agent 2505. The firstcache agent 2505 can identify that the snoop results in a request by thesecond cache agent 2520 to obtain an exclusive M-state copy of the line.Consequently, the first cache agent 2505 transitions to the M state tosend its copy of the line as an M-state copy (with Data_M message) tothe second cache agent 2520. Additionally, the first cache agent 2505also sends a response message RspFwdI to indicate that the copy of theline has been sent to the second cache agent 2520 and that the firstcache agent has transitioned to an I-state (having given up ownership ofthe copy to the second cache agent 2520).

Turning next to the example of FIG. 27, another simplified flowchart isshown. In this example, a cache agent 2520 attempts to request exclusiveownership of an uncacheable (UC) line without receiving data (e.g.,through a InvItoE message). A first cache agent 2505 send a competingmessage (RdInv) for the cache line in E state. The HPI Coherenceprotocol can specify that if the requested line was previously cached inM state, the line will be written to memory before E data is deliveredin response to the RdInv of the first cache agent 2505. The home agent2510 can send a complete (CmpO) to the InvItoE request and send a snoop(SnpInv) to cache agent 2520 based on the RdInv request. If the cacheagent 2520 receives the snoop before the complete, the cache agent 2520can identify that the snoop pertains to the same cache line as itsexclusive ownership request and indicate a conflict through a forwardrequests RspCnflt. As in previous examples, the home agent 2510 can beconfigured to respond to the forward request with a forward response(FwdCnfltO). Multiple permissible responses may be allowed to theforward response. For instance, the cache agent 2520 can initiate anexplicit writeback (e.g., WbMtoI) and block the snoop (or forward) untilthe explicit writeback is completed (e.g., CmpU), as shown in theexample of FIG. 27. The cache agent can then complete the snoop response(RspI). The home agent 2510 can then process the RdInv request of thefirst cache agent 2505 and return a complete Data_E_CmpO, among otherexamples.

In examples, such as the example of FIG. 27, where a cache agentreceives a snoop when the agent has an outstanding read or invalidationrequest to the same address and it has cached a partial modified line(often referred to as a “buried-M”), the HPI Coherence protocol, in oneimplementation, allows the agent to either 1) perform an explicitwriteback (partial) of the line while blocking the snoop or 2) send aforward request (RspCnflt) to the home agent. If (1) is chosen, theagent processes the snoop after receiving the complete for thewriteback. If (2) is chosen, it is possible that the agent will receiveforward response (FwdCnfltO) while its outstanding read or invalidationrequest is still waiting for responses and the agent still has a partialmodified line. If that is the case, the protocol allows the agent toblock the forward while performing an explicit writeback (partial) ofthe line. During the writeback, the protocol guarantees the agent willnot receive responses for the outstanding read or invalidation request.The mechanism described above (allowing coherence agents to issueexplicit writebacks and block snoops and forwards, even when the agenthas an outstanding read or invalidation request) is also used to ensurepartial or UC writes are posted to memory before the writer acquiresglobal observability.

Coherence agents use a two-step process for partial/UC writes. First,they check if they have ownership of the cacheline and issue anownership (invalidation) request in the protocol if they do not. Second,they perform the write. In the first step, if they performed anownership request, it is possible that the request will conflict withother agents' requests for the line, meaning the agent might receive asnoop while the ownership request is outstanding. Per coherence protocolrequirements, the agent will issue a forward request for the conflictingsnoop. While waiting for the forward response, the agent may receive theownership request's completion, which grants ownership of the line tothe agent and allows the agent to initiate the writeback for thepartial/UC write. While this is occurring, the agent might receive theforward response, which it is obligated to process also. The coherenceagent may not combine the two activities. The coherence agent is toinstead writeback the partial/UC write data separately from processingthe forward, and perform the writeback first. For instance, a cacheagent may use a writeback request to commit UC data before processingforward and writeback partial cache lines, among other examples andfeatures.

In one embodiment, the HPI Coherence protocol can support a readinvalidate (RdInv) request accepting Exclusive-state data. Semantics ofuncacheable (UC) reads include flushing modified data to memory. Somearchitectures, however, allow forwarding M data to invalidating reads,which forced the requesting agent to clean the line if it received Mdata. The RdInv simplifies the flow and does not allow E data to beforwarded. For instance, as shown in the example of FIG. 28, thedirectory state of a home agent 2510 can indicate that no agent (e.g.,2505, 2510) has a copy of the line. In such instances, the home agent2510 may immediately send the data and completion response(s). HPIallows the same if the effective directory state indicates no peer canhave a copy of the line.

As shown in the example of FIG. 28, in some implementations an agent canrespond to a snoop with a RspIWb message, indicating that the cacheagent (e.g., 2505) is in (or has transitioned to) an I-state whilerequesting a write to memory. A RspIWb can set the effective directorystate to Invalid and allows a home agent 2510 to send a response withoutsnooping all peers. In the example of FIG. 28, a second cache agent 2520send a RdInv request while the home agent directory is in an Unknownstate. In response, the home agent 2510 initially snoops only firstcache agent 2505. In this example, cache agent 2505 has a modified copyof the line and responds with an implicit writeback (e.g., RspIWb). WhenHome receives the RspIWb message, it can determined that no other agentcould have had a copy of the line and identified further that cacheagent 2505 has invalidated its cache through the RspIWb. In response,the home agent 2510 can set the directory state to Invalid. Because thedirectory state is Invalid, the home agent 2510 waits until the write tomemory 2515 completes and then sends the data and completion response(s)(e.g., Data_E_CmpO) and releases the resource it allocated for therequest from cache agent 2520. In this example, the home agent may skipthe snooping of other cache agents in the system. Indeed, in suchexamples, a home agent (e.g., 2510) can send data and a completionresponse prior to receiving all snoop responses (e.g., due to theidentification of an M-copy at agent 2505), as illustrated in theexample illustrated in FIG. 29 (with cache agent 2905).

In the examples of FIGS. 28 and 29, when the second cache agent 2520receives the Data_E_CmpO response from the home agent 2510, the cacheagent 2520 can load the data into its cache, set its cache state to E,and release the resource RTID it allocated for the request. Afterreleasing the RTID, cache agent 2520 may reuse it for a new request. Inthe meantime, the home agent 2510 can wait for snoop responses forsnoops to the request originally using the RTID. Snoop messages cancontain the request's RTID and requesting agent's NID. Thus, becausecache agent 2520 could reuse the RTID for a new request to the same or adifferent home agent, and that home agent could generate snoops for thenew request while snoops for the original request are outstanding, it ispossible that the same “unique” transaction ID will exist in snoops tothe same coherence agents. From a coherency perspective this duplicationof transaction ID (TID) can nonetheless be acceptable because snoops forthe original request will only find I states.

A home agent may generate a snoop when the request's Tracker state isWait, Busy or DataXfrd, meaning either the home agent has not yet sent adata response or a snoop response indicated some peer forwarded the datato the requesting agent. A home agent may also check the request's Snoopfield to ensure it has not yet sent a snoop to a Peer. When sending asnoop, a home agent may add Peer (or all fanout Peers) to Snoop (toprevent sending a second snoop) and track outstanding snoop responses.

As noted above, some implementations of HPI can support fanout snoops.Additionally, in some examples, HPI can support an explicit fanout snoopoperation, SnpF, for fanout snoops generated by the Routing layer. AnHPI home agent (e.g., 2510) can utilize SnpF to generate a single fanoutsnoop request (e.g., with a single command and message) and, inresponse, the Routing layer can generate snoops to all peer agents inthe respective fanout cone based on the SnpF request. The home agent mayaccordingly expect snoop responses from each of the agent sections.While other snoop messages may include a destination node ID, fanoutsnoops may omit a destination NID because the Routing layer isresponsible for generating the appropriate snoop messages to all peersin the fanout region.

As the Routing layer is immediately below the Protocol layer, in someimplementations, communication fabric requirements are upon the RoutingLayer. In one embodiment, the HPI Coherence protocol can have has onecommunication fabric requirement that is specific to the Routing layer.For instance, the Coherence protocol can depend upon the Routing layerto convert a fanout snoop (SnpF* opcodes—Snoop (SNP) Channel Messages)into the appropriate snoops for all of the request's peers in the fanoutset of cache agents. The fanout set is a configuration parameter of theRouting layer that is shared by the Protocol layer, or a home agentconfiguration parameter.

In some implementations, a home agent may send a fanout snoop for anactive standard request. The HPI Routing layer can convert the fanoutsnoop request of the home agent into regular snoops to each of the peersin the fanout cone defined by the Routing layer. The HPI Coherenceprotocol home agent is made aware of which coherence agents are coveredby the Routing layer fanout via a HAFanoutAgent configuration parameteridentifying the respective cache agents that are included in the fanoutcone by address. The Routing layer can receive the fanout snoop SnpF andconvert it into a snoops of every cache agent included in the fanoutcone (excepting the requesting agent). In one implementation, theRouting layer can convert the fanout snoop into corresponding non-fanoutsnoops (with appropriate non-fanout opcodes, such as those in Table 3),among other examples.

Similar to regular snoops, a home agent may be limited to sending afanout snoop only before it sends a completion response to a coherenceprotocol request by a cache agent. Further, additional conditions can beplaced on the fanout snoops. As examples, a home agent may send a fanoutsnoop if it has not individually snooped any of the peers in the fanoutcone. In other words, a home agent may not initiate a fanout snoop, insome implementations, if the fanout cone is empty or if the requestingcache agent is the only agent in the fanout cone, among other examples

In one embodiment, HPI can support an explicit writeback with cache-pushhint (WbPushMtoI). Generally, in some examples, modified data can betransferred by either explicitly writing the data back to memory ortransferring the modified data in response to a snoop request.Transferring modified data in connection with a snoop response can beconsidered a “pull” transfer. In some implementations, a “push”mechanism can also be supported, whereby a cache agent with the modifieddata sends the modified data directly to another caching agent forstorage in the target agent's cache (along with the Modified cachestate).

In one embodiment, a cache agent can write back modified data with ahint to the home agent that it may push the modified data to a “local”cache, storing the data in M state in the local cache, without writingthe data to memory. In one implementation, a home agent 2510 can receivea WbPushMtoI message from a cache agent 2505 and identify the hint thatanother cache agent (e.g., 2520) is likely to utilize or desireownership of a particular line in the near future, as shown in theexample of FIG. 30. The home agent 2510 can process the WbPushMtoImessage and effectively accept the hint and push the written-back datato the other cache agent 2520 without writing the data to memory 2515,thereby causing the other cache agent 2520 to transition to an M state.In some implementations, the home agent 2510 can alternatively processthe WbPushMtoI message and opt to write the data back to memory, as in aWbMtoI request (such as illustrated in FIG. 31) and not push thewritten-back data directly to the other cache agent 2520.

In one example implementation, a home agent (e.g., 2510) can process aWbPushMtoI message by checking that the tracker state is WbBuffered,which can indicate that the home agent has not yet processed the data.In some instances, a “push” of the data can be conditioned on the homeagent determining that the home agent is not already processing astandard request to the same address. In some implementations, the pushcan be further conditioned on the home agent determining that thetargeted cache agent (e.g., 2520, in the example of FIG. 30) is “local.”If the targeted cache agent is not covered by the home agent directory,then the home agent may transfer the data to the target cache agent'scache and update the directory to Invalid. If the targeted cache agentis covered by the directory, then the data transfer to the cache agent'scache may only be allowed only if the targeted cache agent does not havean active InvXtoI, and when transferred the home agent can update thedirectory to Exclusive with the target cache agent as the owner. Otherconditions can be defined (e.g., in a corresponding protocol statetable) for a home agent in determining whether to accept the hint of theWbPushMtoI message and push data to a targeted cache agent, or insteadprocess the WbPushMtoI message as a WbMtoI request by first writing thedata to memory, among other potential examples.

In some implementations, HPI Can support an InvItoM message topre-allocate to a directory cache of a home agent, such as an I/Odirectory cache (IODC). An InvItoM can request exclusive ownership of acache line without receiving data while indicating an the intent ofperforming a writeback soon afterward. A required cache state may be anM state, and E state, or either. A home agent can process an InvItoMmessage to pre-allocate a resource for the writeback hinted at throughthe InvItoM message (including the InvItoM opcode).

In some implementations, an opcode can be provided through HPI Coherenceprotocol to trigger a memory flush of a memory controller with which oneor more home agents interact. For instance, an opcode, WbFlush, can bedefined for persistent memory flush. As shown in the example of FIG. 32,a host (e.g., 3205) can send a WbFlush message directed to a particularmemory controller 3210. In some instances, the WbFlush can indicate aparticular address and the WbFlush command can be sent to the specificmemory controller targeted by the address. In another example, a WbFlushmessage can be broadcast to multiple memory controllers. In one example,the t may be sent as a result of a persistent commit in a CPU. Eachrespective memory controller (e.g., 3210) receiving a WbFlush commandcan process the message to all pending writes at the memory controllerto a persistent memory device (or memory location) managed by the memorycontroller. The purpose of the command can be to commit all previouswrites to persistent memory. For example, a WbFlush command can betriggered in connection with a power failure management controller orprocess, so as to ensure that pending writes are flushed to non-volatilememory and preserved in the event of a power failure of the system.Further, as shown in the example of FIG. 32, upon flushing (orinitiating the flushing of) all pending writes to memory (e.g., 3215),the memory controller 3210 can respond to the requesting host (or agent)(e.g., 3205) with a completion indicating the flush. The completionshould not be sent to the host until the memory controller has assuredthat the data will make it to persistent memory. The WbFlush message orcorresponding completion can serve as a check point for other processesand controllers dependent on or driving the flushing of pending writesto memory, among other uses and examples.

Some traditional architectures can require for Data_M and correspondingcompletes to be sent separately. HPI may be extended to have coherenceagents support accepting a combined Data_M_CmpO. Further, home agentscan be configured to generate a combined Data_M_CmpO message viabuffering implicit writeback data. Indeed, in some implementations, anagent can be provided with logic that combines cache and home agentbehaviors, such that when the agent receives a request and find M datain its cache, it can directly generate the Data_M_CmpO. In suchinstances, the Data_M_CmpO response can be generated without generatinga RspIWb or buffering writeback data, among other examples.

In another example, as shown in the example protocol state table 3300illustrated in FIG. 33, a state machine (embodied by a machine readablestate table (e.g., 3300)) can define a variety of potential responsemessages a home agent may send when the standard request's tracker entryis identified as in Busy or WbBuffered state. As shown in table 3300, inone example, a home agent may not be allowed to send a CmpO completionmessage to a read Rd* request from either state, effectively meaning ahome agent is to send a data response before or with a completionresponse. In cases where a Data_X response may be sent in the home agentresponse message, the home agent may combine the data response with acompletion and send it instead.

The state of the data response can be fixed for invalidating requestsand RdCur. For RdMigr and RdData, non-shared directory states can allowE data to be sent. For RdMigr, RdData, and RdCode, a Shared directorystate can involve checking if all peers that might have F state weresnooped. If they were, then the data can be sent with F state;otherwise, the data can be sent in S state in case an unsnooped peer hasan F copy, among other potential examples. Further, a home agent maysend a Data_M or Data_M_CmpO response, in some implementations, only ifit buffered the data from a RspIWb snoop response. When a home agentbuffers RspIWb data, it can store the data in the tracker entry andchange the entry's state to WbBuffered. Note that if a home agentbuffers the RspIWb data instead of writing it to memory, it sends aData_M or Data_M_CmpO response in this example.

In one embodiment, as noted above, HPI Coherence protocol can support anF state that allows a cache agent to keep F state when forwarding shareddata. In some systems, or instances, the F (forward) cache state can beitself forwardable. When a cache holds a line in F state and receives asnoop which allows transferring shared data, the cache may forward thedata, and when it does it can send the F state with the data andtransition its cache state to S (or I). In some circumstances, it isdesirable for the cache to instead keep the F state when forwardingdata, in which case it will send S state with the forwarded data.

In one example, the ability of a cache agent to keep or pass an F stateon a shared transfer can be controllable. In one example, aconfiguration parameter, per coherence agent, can indicate whether acoherence agent will transfer or hold onto a F state. Regardless of theparameter setting, the coherence agent can use the same snoop response(e.g., RspFwdS). In the additional case of an agent having the line in Estate when the snoop arrives, the cache agent can transition its cachestate to F when forwarding the S data and sending the RspFwdS response(when the parameter is set to hold F state). In the additional case ofan agent having the line in M (full) state when the snoop arrives, thecache agent can downgrade its cache state to F when forwarding the Sdata, writing back the data to memory, and sending the RspFwdSWbresponse (when the parameter is set to hold F state). Further, acoherence agent with F state that receives a “sharing” snoop or forwardafter such a snoop may keep the F state while sending S state to therequesting agent. In other instances, the configuration parameter can betoggled to allow the F state to be transferred in a transfer of shareddata and transition to an S (or I) state, among other examples. Indeed,as shown in the example state table 3400 of FIG. 34, a cache agent in Fstate can respond in a variety of ways, including a SnpMigr/FwdMigr, F,F, RspFwdS, Data_S, among other examples.

As noted above, in some implementations, state transitions of a cacheline and agents can be managed using a state machine. In oneimplementation, the state machine can be further embodied by a set orlibrary of state tables that have been defined to detail all of thevarious combinations of commands, attributes, previous states, and otherconditions that can influence how state transitions are to take place,as well as the types of messages, data operations, masks, and so on,that can be associated with the state transition (such as illustrated inthe particular examples of FIGS. 33 and 34). Each state table cancorrespond to a particular action or category of actions or states. Theset of tables can include multiple tables, each table corresponding to aparticular action or sub-action. The set of tables can embody a formalspecification of a protocol, such as the Coherence Protocol or anotherprotocol (at any of the stack layers) of HPI.

State tables can be human-readable files, such as table structures thatcan be readily interpreted and modified and developed by a human userinteracting with the state table structure using an endpoint computerdevice. Other users can utilize the state table to readily interpretstate transitions within the Coherence Protocol (or any other protocolof HPI). Further, state tables can be machine-readable and parsablestructures that can be read and interpreted by a computer to identifyhow states are to transition according to a particular protocolspecification.

FIG. 35 illustrates a simplified representation of a generalized statetable for an action “Action A”. A protocol state table 3500, in oneexample, can include columns (e.g., 3505) pertaining to current states(or the states from which a transition is to be made) and other columns(e.g., 3510) pertaining to next states (or the states that are to betransitioned to). Columns in the current state columns can correspond tovarious characteristics of the state, such as commands received in aresponse message, snoop message, or other message, a cache line state,outgoing request buffer (ORB) condition, credits or resources toapply/reserve, whether the cache line is partially modified, aforwarding condition, and so on. Each row in the table 3500 cancorrespond to a detected set of conditions for a cache line in aparticular state. Further, the cells in the row within the next statecolumns (e.g., 3510) can indicate the next state and conditions of thenext state that is to be entered into based on the current stateconditions specified in the row cells in the current state columns(e.g., 3505). The next state columns (e.g., 3510) can correspond toconditions in the next state such as the messages that are to be sent(e.g., to a corresponding home node (HNID), requesting node (RNID), peernode, etc.), the next cache line state, forward state, and so on.

In one embodiment, protocol state tables can use row spanning toindicate that multiple behaviors or states (rows) are equallypermissible for a certain set of current state conditions. For instance,in the example of FIG. 35, when the Command is Cmd1, a first conditionis false, the cache line is in a second state, and a second condition isalso false (as indicated by rows 3515), multiple potential next stateconditions are possible and may be equally permissible, each indicatedby a respective row. In other word, any one of such equally permissibletransitions can be triggered based on the corresponding current stateconditions. In some implementations, additional agent logic can selectwhich of the multiple next state to select, among other exampleimplementations. In one illustrative example, a current state section ofa state table corresponding to home agent send request responses caninclude multiple conditions (or input and state guards) including allvalid behaviors for a coherence agent to perform when the agent holds afull M-line in its cache and is processing a SnpMigr to the samecacheline. The table rows may correspond to five different, and equallypermissible, next state behaviors the coherence agent can take inresponse to the current state conditions, among other examples.

In other systems, a bias bit may be included in protocol state tableswhere multiple potential next states or conditions are possible for aparticular current state, In QPI, for instance, a “bias” bit is includedin tables as a mechanism to select among behaviors. Such bias bits maybe primarily used during validation of a protocol's state machine, butsuch bias bits introduce additional complexity and, in some cases,confusion unfamiliar with the utility of the bias bit. In some respects,a bias bit may be nothing more than an artifact of a validationexercise. In one example of HPI, through protocol tables using rows thatpotentially span multiple rows, bias bits and other features can beexcluded. In such instances, HPI protocol tables can emphasize explicitnon-determinism.

Turning to the example of FIG. 36, in one embodiment, protocol tablesmay be nested by having one table refer to another sub-table in the“next state” columns, and the nested table can have additional orfiner-grained guards to specify which rows (behaviors) are permitted. Asshown in FIG. 36, an example protocol state table 3500 can include anembedded reference 3605 to another table 3600 included in the set oftables embodying a protocol specification, such as a state tablepertaining to a sub-action related to the action or behavior included inthe next state designated for certain rows of table 3500. Multipletables (e.g., 3500, 3610) can reference a nested table (e.g., 3600). Asan example, an agent processing incoming responses to protocol responsesmay follow an action table (e.g., 3500, 3610) and a subaction table3600. Here, action table 3500 can include a next state with a subactiontable nested under one or more other protocol tables. This type ofnesting can apply beyond coherence protocol and protocol layer statetables, but can also be applied to any known or future protocolresponse/tables.

In one example, an agent can make use of protocol tables (or anotherparsable structure constructed from the protocol tables) and canidentify a particular state table corresponding to a particular actionor event. Further, the agent can identify the row that applies to thecache line handled or targeted by the agent and identify, from thetable, the next state information for the cache line. This determinationcan include the identification of a reference to a nested table of asub-action. Accordingly, the agent can identify the correspondingstructure of the linked-to nested table and further reference the nestedtable to determine the state transition.

In one particular example, a collective set of protocol tables can bedefined and represent all of the possible, defined state transitions ina protocol. Further, each table can specify a set of transitionscovering a set of related behaviors within the protocol (e.g. one tablecovers all the behaviors involved in snooping and updating cache state,one covers all behaviors generating new requests, etc.). When an agentis to perform a behavior, process an event, or check if some otheraction should be taken the agent can identify the particular state tablecovering that particular behavior within the set of state tables. Theagent can then identify the current state of the system and referencethe selected state table to identify the row or group of rows matchingthe current state, if any. If no rows match, the agent may, in someinstances, refrain from taking any action for the given current stateand wait for some other event/behavior to change the state before tryingagain. Further, in some instances, as introduced above, if more than onerow matches the identified system state, the agent can selects any ofthem to perform, as all can be regarded as equally permissible. Further,in the case of nesting, if a row refers to a nested table, the agent canaccess the nested table and use the identified current state of thesystem to search for allowed rows in the nested table.

In some examples, upon traversing any primary and nested tables todetermine a response to a particular identified system (or protocol)state, the agent can cause the corresponding actions to be performed andthe state of the system to be updated in accordance with the “nextstates” designated in the corresponding state tables.

In some instances, it can be possible that more than one state tablerelates to or covers a set of behaviors. For instance, as anillustrative example, two tables may be provided for processing snoops,the first for the case when there was a conflicting active request, thesecond table was for when there was not. Accordingly, in someimplementations, an agent may survey multiple tables to determine whichtable includes rows relevant to the particular conditions and statesidentified by the agent. Further, in some cases, an agent may handle twounrelated or distinct events occurring simultaneously, such as anexample where a home agent receives a snoop response and a new requestat the same time. In instances where multiple events are beingprocesses, an agent can identify and use multiple corresponding tablessimultaneously to determine how to process the events.

Turning now to FIGS. 37 and 38, simplified block diagrams 3700, 3800 areshown of examples of a testing or validation environment for use invalidating at least a portion of a protocol. For instance, in theexample of FIG. 37, a test engine 3700 is provided adapted to validate astate machine of a protocol. For instance, in one example, test engine3700 can include or be based upon principles of a Murphi tool or anotherenumerative (explicit state) model checker, among other examples. Forinstance, other specification languages can be utilized in lieu of theMurphi examples described, including, as another example, TLA+ oranother suitable language or format. In traditional systems, state modelcheckers have been constructed by human developers who attempt totranslate state machines (e.g., from accompanying state tables, etc.)into a set of requirements that are then used to generate a checkercapable of checking the state machine. This is not only a typicallylabor- and resource-intensive process, but also introduces human erroras the states and state transitions of a state table are transcribed andinterpreted by human users.

In one implementation, a test engine 3700 can utilize a set of statetables (e.g., 3705) to automatically generate, from the set of statetables, resources to model behaviors of agents in a test environment.For instance, in the example of FIG. 37, a test engine 3700 can utilizethe state tables 3705 as a functionality engine for modeling a cacheagent or other agent (e.g., 3710) that can be used to validate variousstate transitions by simulating requests and responses (e.g., 3712) withother real or simulated agents, including a home agent 3715. Similarly,as shown in the example of FIG. 38, test engine 3700 can utilize statetables 3705 to simulate requests and responses (e.g., 3718) of a homeagent (e.g., 3720) and interface with other real or simulated agents(e.g., 3725) to further validate and enumerate states of the protocol.As an example, test engine 3700 can model an agent and receive real ormodeled protocol messages, such as HPI Coherence protocol messages, andreference state tables 3705 (or another parsable structure generatedfrom the state tables 3705) to automatically generate an appropriateresponse, perform corresponding state transitions, and so on, based onthe state tables 3705.

In one particular implementation, a test engine or other software- orhardware-based utility can be used to utilize state tables (e.g., 3705)to generate code to drive and react to designs that employ a particularprotocol, such as HPI Coherence protocol. In this particular example,state tables can be utilized as an input of the test engine byconverting tables or included pseudocode along with Murphi mappings fortable values and pseudocode elements into appropriate Murphi rule andprocedure format. The test engine can be used to further generate Murphicode for type definitions and supporting functionality. The Murphi rule,procedure, type and support code can be used to generate a Murphi model.The Murphi model can be translated, for instance, using a converter, toa C++ or other class definition. Indeed, any suitable programminglanguage can be utilized. Sub-classes of the model class can be furthergenerated and these modules can be used to behave as a simulated ortestbench version of an agent employing and aligned to the protocolspecification embodied in the state tables. Further, an internal API canbe generated or otherwise provided that is aligned to message generationand message reception as defined in the protocol state tables. Forinstance, a message generation API can be tied to link packet types andmessage reception can be unified under single interface point. In thisexample, an entire formal protocol specification can be converted into aC++ (or other object-oriented programming language) class. Inheritancecan be used to intercept messages generated, and instances of theinheriting class can be created as functional testbench agent(s).Generally, formal specification tables can be used as a functionalityengine for a validation or testing environment tool rather than havingdevelopers separately create their own tools based upon theirinterpretation of the specification.

HPI can be incorporated in any variety of computing devices and systems,including mainframes, server systems, personal computers, mobilecomputers (such as tablets, smartphones, personal digital systems,etc.), smart appliances, gaming or entertainment consoles and set topboxes, among other examples. For instance, referring to FIG. 39, anembodiment of a block diagram for a computing system including amulticore processor is depicted. Processor 3900 includes any processoror processing device, such as a microprocessor, an embedded processor, adigital signal processor (DSP), a network processor, a handheldprocessor, an application processor, a co-processor, a system on a chip(SOC), or other device to execute code. Processor 3900, in oneembodiment, includes at least two cores—core 3901 and 3902, which mayinclude asymmetric cores or symmetric cores (the illustratedembodiment). However, processor 3900 may include any number ofprocessing elements that may be symmetric or asymmetric.

In one embodiment, a processing element refers to hardware or logic tosupport a software thread. Examples of hardware processing elementsinclude: a thread unit, a thread slot, a thread, a process unit, acontext, a context unit, a logical processor, a hardware thread, a core,and/or any other element, which is capable of holding a state for aprocessor, such as an execution state or architectural state. In otherwords, a processing element, in one embodiment, refers to any hardwarecapable of being independently associated with code, such as a softwarethread, operating system, application, or other code. A physicalprocessor (or processor socket) typically refers to an integratedcircuit, which potentially includes any number of other processingelements, such as cores or hardware threads.

A core often refers to logic located on an integrated circuit capable ofmaintaining an independent architectural state, wherein eachindependently maintained architectural state is associated with at leastsome dedicated execution resources. In contrast to cores, a hardwarethread typically refers to any logic located on an integrated circuitcapable of maintaining an independent architectural state, wherein theindependently maintained architectural states share access to executionresources. As can be seen, when certain resources are shared and othersare dedicated to an architectural state, the line between thenomenclature of a hardware thread and core overlaps. Yet often, a coreand a hardware thread are viewed by an operating system as individuallogical processors, where the operating system is able to individuallyschedule operations on each logical processor.

Physical processor 3900, as illustrated in FIG. 39, includes twocores—core 3901 and 3902. Here, core 3901 and 3902 are consideredsymmetric cores, i.e. cores with the same configurations, functionalunits, and/or logic. In another embodiment, core 3901 includes anout-of-order processor core, while core 3902 includes an in-orderprocessor core. However, cores 3901 and 3902 may be individuallyselected from any type of core, such as a native core, a softwaremanaged core, a core adapted to execute a native Instruction SetArchitecture (ISA), a core adapted to execute a translated InstructionSet Architecture (ISA), a co-designed core, or other known core. In aheterogeneous core environment (i.e. asymmetric cores), some form oftranslation, such a binary translation, may be utilized to schedule orexecute code on one or both cores. Yet to further the discussion, thefunctional units illustrated in core 3901 are described in furtherdetail below, as the units in core 3902 operate in a similar manner inthe depicted embodiment.

As depicted, core 3901 includes two hardware threads 3901 a and 3901 b,which may also be referred to as hardware thread slots 3901 a and 3901b. Therefore, software entities, such as an operating system, in oneembodiment potentially view processor 3900 as four separate processors,i.e., four logical processors or processing elements capable ofexecuting four software threads concurrently. As alluded to above, afirst thread is associated with architecture state registers 3901 a, asecond thread is associated with architecture state registers 3901 b, athird thread may be associated with architecture state registers 3902 a,and a fourth thread may be associated with architecture state registers3902 b. Here, each of the architecture state registers (3901 a, 3901 b,3902 a, and 3902 b) may be referred to as processing elements, threadslots, or thread units, as described above. As illustrated, architecturestate registers 3901 a are replicated in architecture state registers3901 b, so individual architecture states/contexts are capable of beingstored for logical processor 3901 a and logical processor 3901 b. Incore 3901, other smaller resources, such as instruction pointers andrenaming logic in allocator and renamer block 3930 may also bereplicated for threads 3901 a and 3901 b. Some resources, such asre-order buffers in reorder/retirement unit 3935, ILTB 3920, load/storebuffers, and queues may be shared through partitioning. Other resources,such as general purpose internal registers, page-table base register(s),low-level data-cache and data-TLB 3915, execution unit(s) 3940, andportions of out-of-order unit 3935 are potentially fully shared.

Processor 3900 often includes other resources, which may be fullyshared, shared through partitioning, or dedicated by/to processingelements. In FIG. 39, an embodiment of a purely exemplary processor withillustrative logical units/resources of a processor is illustrated. Notethat a processor may include, or omit, any of these functional units, aswell as include any other known functional units, logic, or firmware notdepicted. As illustrated, core 3901 includes a simplified,representative out-of-order (OOO) processor core. But an in-orderprocessor may be utilized in different embodiments. The OOO coreincludes a branch target buffer 3920 to predict branches to beexecuted/taken and an instruction-translation buffer (I-TLB) 3920 tostore address translation entries for instructions.

Core 3901 further includes decode module 3925 coupled to fetch unit 3920to decode fetched elements. Fetch logic, in one embodiment, includesindividual sequencers associated with thread slots 3901 a, 3901 b,respectively. Usually core 3901 is associated with a first ISA, whichdefines/specifies instructions executable on processor 3900. Oftenmachine code instructions that are part of the first ISA include aportion of the instruction (referred to as an opcode), whichreferences/specifies an instruction or operation to be performed. Decodelogic 3925 includes circuitry that recognizes these instructions fromtheir opcodes and passes the decoded instructions on in the pipeline forprocessing as defined by the first ISA. For example, as discussed inmore detail below decoders 3925, in one embodiment, include logicdesigned or adapted to recognize specific instructions, such astransactional instruction. As a result of the recognition by decoders3925, the architecture or core 3901 takes specific, predefined actionsto perform tasks associated with the appropriate instruction. It isimportant to note that any of the tasks, blocks, operations, and methodsdescribed herein may be performed in response to a single or multipleinstructions; some of which may be new or old instructions. Notedecoders 3926, in one embodiment, recognize the same ISA (or a subsetthereof). Alternatively, in a heterogeneous core environment, decoders3926 recognize a second ISA (either a subset of the first ISA or adistinct ISA).

In one example, allocator and renamer block 3930 includes an allocatorto reserve resources, such as register files to store instructionprocessing results. However, threads 3901 a and 3901 b are potentiallycapable of out-of-order execution, where allocator and renamer block3930 also reserves other resources, such as reorder buffers to trackinstruction results. Unit 3930 may also include a register renamer torename program/instruction reference registers to other registersinternal to processor 3900. Reorder/retirement unit 3935 includescomponents, such as the reorder buffers mentioned above, load buffers,and store buffers, to support out-of-order execution and later in-orderretirement of instructions executed out-of-order.

Scheduler and execution unit(s) block 3940, in one embodiment, includesa scheduler unit to schedule instructions/operation on execution units.For example, a floating point instruction is scheduled on a port of anexecution unit that has an available floating point execution unit.Register files associated with the execution units are also included tostore information instruction processing results. Exemplary executionunits include a floating point execution unit, an integer executionunit, a jump execution unit, a load execution unit, a store executionunit, and other known execution units.

Lower level data cache and data translation buffer (D-TLB) 3950 arecoupled to execution unit(s) 3940. The data cache is to store recentlyused/operated on elements, such as data operands, which are potentiallyheld in memory coherency states. The D-TLB is to store recentvirtual/linear to physical address translations. As a specific example,a processor may include a page table structure to break physical memoryinto a plurality of virtual pages.

Here, cores 3901 and 3902 share access to higher-level or further-outcache, such as a second level cache associated with on-chip interface3910. Note that higher-level or further-out refers to cache levelsincreasing or getting further way from the execution unit(s). In oneembodiment, higher-level cache is a last-level data cache—last cache inthe memory hierarchy on processor 3900—such as a second or third leveldata cache. However, higher level cache is not so limited, as it may beassociated with or include an instruction cache. A trace cache—a type ofinstruction cache—instead may be coupled after decoder 3925 to storerecently decoded traces. Here, an instruction potentially refers to amacro-instruction (i.e. a general instruction recognized by thedecoders), which may decode into a number of micro-instructions(micro-operations).

In the depicted configuration, processor 3900 also includes on-chipinterface module 3910. Historically, a memory controller, which isdescribed in more detail below, has been included in a computing systemexternal to processor 3900. In this scenario, on-chip interface 3910 isto communicate with devices external to processor 3900, such as systemmemory 3975, a chipset (often including a memory controller hub toconnect to memory 3975 and an I/O controller hub to connect peripheraldevices), a memory controller hub, a northbridge, or other integratedcircuit. And in this scenario, bus 3905 may include any knowninterconnect, such as multi-drop bus, a point-to-point interconnect, aserial interconnect, a parallel bus, a coherent (e.g. cache coherent)bus, a layered protocol architecture, a differential bus, and a GTL bus.

Memory 3975 may be dedicated to processor 3900 or shared with otherdevices in a system. Common examples of types of memory 3975 includeDRAM, SRAM, non-volatile memory (NV memory), and other known storagedevices. Note that device 3980 may include a graphic accelerator,processor or card coupled to a memory controller hub, data storagecoupled to an I/O controller hub, a wireless transceiver, a flashdevice, an audio controller, a network controller, or other knowndevice.

Recently however, as more logic and devices are being integrated on asingle die, such as SOC, each of these devices may be incorporated onprocessor 3900. For example in one embodiment, a memory controller hubis on the same package and/or die with processor 3900. Here, a portionof the core (an on-core portion) 3910 includes one or more controller(s)for interfacing with other devices such as memory 3975 or a graphicsdevice 3980. The configuration including an interconnect and controllersfor interfacing with such devices is often referred to as an on-core (orun-core configuration). As an example, on-chip interface 3910 includes aring interconnect for on-chip communication and a high-speed serialpoint-to-point link 3905 for off-chip communication. Yet, in the SOCenvironment, even more devices, such as the network interface,co-processors, memory 3975, graphics processor 3980, and any other knowncomputer devices/interface may be integrated on a single die orintegrated circuit to provide small form factor with high functionalityand low power consumption.

In one embodiment, processor 3900 is capable of executing a compiler,optimization, and/or translator code 3977 to compile, translate, and/oroptimize application code 3976 to support the apparatus and methodsdescribed herein or to interface therewith. A compiler often includes aprogram or set of programs to translate source text/code into targettext/code. Usually, compilation of program/application code with acompiler is done in multiple phases and passes to transform hi-levelprogramming language code into low-level machine or assembly languagecode. Yet, single pass compilers may still be utilized for simplecompilation. A compiler may utilize any known compilation techniques andperform any known compiler operations, such as lexical analysis,preprocessing, parsing, semantic analysis, code generation, codetransformation, and code optimization.

Larger compilers often include multiple phases, but most often thesephases are included within two general phases: (1) a front-end, i.e.generally where syntactic processing, semantic processing, and sometransformation/optimization may take place, and (2) a back-end, i.e.generally where analysis, transformations, optimizations, and codegeneration takes place. Some compilers refer to a middle, whichillustrates the blurring of delineation between a front-end and back endof a compiler. As a result, reference to insertion, association,generation, or other operation of a compiler may take place in any ofthe aforementioned phases or passes, as well as any other known phasesor passes of a compiler. As an illustrative example, a compilerpotentially inserts operations, calls, functions, etc. in one or morephases of compilation, such as insertion of calls/operations in afront-end phase of compilation and then transformation of thecalls/operations into lower-level code during a transformation phase.Note that during dynamic compilation, compiler code or dynamicoptimization code may insert such operations/calls, as well as optimizethe code for execution during runtime. As a specific illustrativeexample, binary code (already compiled code) may be dynamicallyoptimized during runtime. Here, the program code may include the dynamicoptimization code, the binary code, or a combination thereof.

Similar to a compiler, a translator, such as a binary translator,translates code either statically or dynamically to optimize and/ortranslate code. Therefore, reference to execution of code, applicationcode, program code, or other software environment may refer to: (1)execution of a compiler program(s), optimization code optimizer, ortranslator either dynamically or statically, to compile program code, tomaintain software structures, to perform other operations, to optimizecode, or to translate code; (2) execution of main program code includingoperations/calls, such as application code that has beenoptimized/compiled; (3) execution of other program code, such aslibraries, associated with the main program code to maintain softwarestructures, to perform other software related operations, or to optimizecode; or (4) a combination thereof.

Referring now to FIG. 40, shown is a block diagram of an embodiment of amulticore processor. As shown in the embodiment of FIG. 40, processor4000 includes multiple domains. Specifically, a core domain 4030includes a plurality of cores 4030A-4030N, a graphics domain 4060includes one or more graphics engines having a media engine 4065, and asystem agent domain 4010.

In various embodiments, system agent domain 4010 handles power controlevents and power management, such that individual units of domains 4030and 4060 (e.g. cores and/or graphics engines) are independentlycontrollable to dynamically operate at an appropriate power mode/level(e.g. active, turbo, sleep, hibernate, deep sleep, or other AdvancedConfiguration Power Interface like state) in light of the activity (orinactivity) occurring in the given unit. Each of domains 4030 and 4060may operate at different voltage and/or power, and furthermore theindividual units within the domains each potentially operate at anindependent frequency and voltage. Note that while only shown with threedomains, understand the scope of the present invention is not limited inthis regard and additional domains may be present in other embodiments.

As shown, each core 4030 further includes low level caches in additionto various execution units and additional processing elements. Here, thevarious cores are coupled to each other and to a shared cache memorythat is formed of a plurality of units or slices of a last level cache(LLC) 4040A-4040N; these LLCs often include storage and cache controllerfunctionality and are shared amongst the cores, as well as potentiallyamong the graphics engine too.

As seen, a ring interconnect 4050 couples the cores together, andprovides interconnection between the core domain 4030, graphics domain4060 and system agent circuitry 4010, via a plurality of ring stops4052A-4052N, each at a coupling between a core and LLC slice. As seen inFIG. 40, interconnect 4050 is used to carry various information,including address information, data information, acknowledgementinformation, and snoop/invalid information. Although a ring interconnectis illustrated, any known on-die interconnect or fabric may be utilized.As an illustrative example, some of the fabrics discussed above (e.g.another on-die interconnect, On-chip System Fabric (OSF), an AdvancedMicrocontroller Bus Architecture (AMBA) interconnect, amulti-dimensional mesh fabric, or other known interconnect architecture)may be utilized in a similar fashion.

As further depicted, system agent domain 4010 includes display engine4012 which is to provide control of and an interface to an associateddisplay. System agent domain 4010 may include other units, such as: anintegrated memory controller 4020 that provides for an interface to asystem memory (e.g., a DRAM implemented with multiple DIMMs; coherencelogic 4022 to perform memory coherence operations. Multiple interfacesmay be present to enable interconnection between the processor and othercircuitry. For example, in one embodiment at least one direct mediainterface (DMI) 4016 interface is provided as well as one or more PCIe™interfaces 4014. The display engine and these interfaces typicallycouple to memory via a PCIe™ bridge 4018. Still further, to provide forcommunications between other agents, such as additional processors orother circuitry, one or more other interfaces may be provided.

Referring now to FIG. 41, shown is a block diagram of a representativecore; specifically, logical blocks of a back-end of a core, such as core4030 from FIG. 40. In general, the structure shown in FIG. 41 includesan out-of-order processor that has a front end unit 4170 used to fetchincoming instructions, perform various processing (e.g. caching,decoding, branch predicting, etc.) and passing instructions/operationsalong to an out-of-order (OOO) engine 4180. OOO engine 4180 performsfurther processing on decoded instructions.

Specifically in the embodiment of FIG. 41, out-of-order engine 4180includes an allocate unit 4182 to receive decoded instructions, whichmay be in the form of one or more micro-instructions or uops, from frontend unit 4170, and allocate them to appropriate resources such asregisters and so forth. Next, the instructions are provided to areservation station 4184, which reserves resources and schedules themfor execution on one of a plurality of execution units 4186A-4186N.Various types of execution units may be present, including, for example,arithmetic logic units (ALUs), load and store units, vector processingunits (VPUs), floating point execution units, among others. Results fromthese different execution units are provided to a reorder buffer (ROB)4188, which take unordered results and return them to correct programorder.

Still referring to FIG. 41, note that both front end unit 4170 andout-of-order engine 4180 are coupled to different levels of a memoryhierarchy. Specifically shown is an instruction level cache 4172, thatin turn couples to a mid-level cache 4176, that in turn couples to alast level cache 4195. In one embodiment, last level cache 4195 isimplemented in an on-chip (sometimes referred to as uncore) unit 4190.As an example, unit 4190 is similar to system agent 4010 of FIG. 40. Asdiscussed above, uncore 4190 communicates with system memory 4199,which, in the illustrated embodiment, is implemented via ED RAM. Notealso that the various execution units 4186 within out-of-order engine4180 are in communication with a first level cache 4174 that also is incommunication with mid-level cache 4176. Note also that additional cores4130N-2-4130N can couple to LLC 4195. Although shown at this high levelin the embodiment of FIG. 41, understand that various alterations andadditional components may be present.

Turning to FIG. 42, a block diagram of an exemplary computer systemformed with a processor that includes execution units to execute aninstruction, where one or more of the interconnects implement one ormore features in accordance with one embodiment of the present inventionis illustrated. System 4200 includes a component, such as a processor4202 to employ execution units including logic to perform algorithms forprocess data, in accordance with the present invention, such as in theembodiment described herein. System 4200 is representative of processingsystems based on the PENTIUM III™, PENTIUM 4™, Xeon™, Itanium, XScale™and/or StrongARM™ microprocessors, although other systems (including PCshaving other microprocessors, engineering workstations, set-top boxesand the like) may also be used. In one embodiment, sample system 4200executes a version of the WINDOWS™ operating system available fromMicrosoft Corporation of Redmond, Wash., although other operatingsystems (UNIX and Linux for example), embedded software, and/orgraphical user interfaces, may also be used. Thus, embodiments of thepresent invention are not limited to any specific combination ofhardware circuitry and software.

Embodiments are not limited to computer systems. Alternative embodimentsof the present invention can be used in other devices such as handhelddevices and embedded applications. Some examples of handheld devicesinclude cellular phones, Internet Protocol devices, digital cameras,personal digital assistants (PDAs), and handheld PCs. Embeddedapplications can include a micro controller, a digital signal processor(DSP), system on a chip, network computers (NetPC), set-top boxes,network hubs, wide area network (WAN) switches, or any other system thatcan perform one or more instructions in accordance with at least oneembodiment.

In this illustrated embodiment, processor 4202 includes one or moreexecution units 4208 to implement an algorithm that is to perform atleast one instruction. One embodiment may be described in the context ofa single processor desktop or server system, but alternative embodimentsmay be included in a multiprocessor system. System 4200 is an example ofa ‘hub’ system architecture. The computer system 4200 includes aprocessor 4202 to process data signals. The processor 4202, as oneillustrative example, includes a complex instruction set computer (CISC)microprocessor, a reduced instruction set computing (RISC)microprocessor, a very long instruction word (VLIW) microprocessor, aprocessor implementing a combination of instruction sets, or any otherprocessor device, such as a digital signal processor, for example. Theprocessor 4202 is coupled to a processor bus 4210 that transmits datasignals between the processor 4202 and other components in the system4200. The elements of system 4200 (e.g. graphics accelerator 4212,memory controller hub 4216, memory 4220, I/O controller hub 4224,wireless transceiver 4226, Flash BIOS 4228, Network controller 4234,Audio controller 4236, Serial expansion port 4238, I/O controller 4240,etc.) perform their conventional functions that are well known to thosefamiliar with the art.

In one embodiment, the processor 4202 includes a Level 1 (L1) internalcache memory 4204. Depending on the architecture, the processor 4202 mayhave a single internal cache or multiple levels of internal caches.Other embodiments include a combination of both internal and externalcaches depending on the particular implementation and needs. Registerfile 4206 is to store different types of data in various registersincluding integer registers, floating point registers, vector registers,banked registers, shadow registers, checkpoint registers, statusregisters, and instruction pointer register.

Execution unit 4208, including logic to perform integer and floatingpoint operations, also resides in the processor 4202. The processor4202, in one embodiment, includes a microcode (ucode) ROM to storemicrocode, which when executed, is to perform algorithms for certainmacroinstructions or handle complex scenarios. Here, microcode ispotentially updateable to handle logic bugs/fixes for processor 4202.For one embodiment, execution unit 4208 includes logic to handle apacked instruction set 4209. By including the packed instruction set4209 in the instruction set of a general-purpose processor 4202, alongwith associated circuitry to execute the instructions, the operationsused by many multimedia applications may be performed using packed datain a general-purpose processor 4202. Thus, many multimedia applicationsare accelerated and executed more efficiently by using the full width ofa processor's data bus for performing operations on packed data. Thispotentially eliminates the need to transfer smaller units of data acrossthe processor's data bus to perform one or more operations, one dataelement at a time.

Alternate embodiments of an execution unit 4208 may also be used inmicro controllers, embedded processors, graphics devices, DSPs, andother types of logic circuits. System 4200 includes a memory 4220.Memory 4220 includes a dynamic random access memory (DRAM) device, astatic random access memory (SRAM) device, flash memory device, or othermemory device. Memory 4220 stores instructions and/or data representedby data signals that are to be executed by the processor 4202.

Note that any of the aforementioned features or aspects of the inventionmay be utilized on one or more interconnect illustrated in FIG. 42. Forexample, an on-die interconnect (ODI), which is not shown, for couplinginternal units of processor 4202 implements one or more aspects of theinvention described above. Or the invention is associated with aprocessor bus 4210 (e.g. other known high performance computinginterconnect), a high bandwidth memory path 4218 to memory 4220, apoint-to-point link to graphics accelerator 4212 (e.g. a PeripheralComponent Interconnect express (PCIe) compliant fabric), a controllerhub interconnect 4222, an I/O or other interconnect (e.g. USB, PCI,PCIe) for coupling the other illustrated components. Some examples ofsuch components include the audio controller 4236, firmware hub (flashBIOS) 4228, wireless transceiver 4226, data storage 4224, legacy I/Ocontroller 4210 containing user input and keyboard interfaces 4242, aserial expansion port 4238 such as Universal Serial Bus (USB), and anetwork controller 4234. The data storage device 4224 can comprise ahard disk drive, a floppy disk drive, a CD-ROM device, a flash memorydevice, or other mass storage device.

Referring now to FIG. 43, shown is a block diagram of a second system4300 in accordance with an embodiment of the present invention. As shownin FIG. 43, multiprocessor system 4300 is a point-to-point interconnectsystem, and includes a first processor 4370 and a second processor 4380coupled via a point-to-point interconnect 4350. Each of processors 4370and 4380 may be some version of a processor. In one embodiment, 4352 and4354 are part of a serial, point-to-point coherent interconnect fabric,such as a high-performance architecture. As a result, the invention maybe implemented within the QPI architecture.

While shown with only two processors 4370, 4380, it is to be understoodthat the scope of the present invention is not so limited. In otherembodiments, one or more additional processors may be present in a givenprocessor.

Processors 4370 and 4380 are shown including integrated memorycontroller units 4372 and 4382, respectively. Processor 4370 alsoincludes as part of its bus controller units point-to-point (P-P)interfaces 4376 and 4378; similarly, second processor 4380 includes P-Pinterfaces 4386 and 4388. Processors 4370, 4380 may exchange informationvia a point-to-point (P-P) interface 4350 using P-P interface circuits4378, 4388. As shown in FIG. 43, IMCs 4372 and 4382 couple theprocessors to respective memories, namely a memory 4332 and a memory4334, which may be portions of main memory locally attached to therespective processors.

Processors 4370, 4380 each exchange information with a chipset 4390 viaindividual P-P interfaces 4352, 4354 using point to point interfacecircuits 4376, 4394, 4386, 4398. Chipset 4390 also exchanges informationwith a high-performance graphics circuit 4338 via an interface circuit4392 along a high-performance graphics interconnect 4339.

A shared cache (not shown) may be included in either processor oroutside of both processors; yet connected with the processors via P-Pinterconnect, such that either or both processors' local cacheinformation may be stored in the shared cache if a processor is placedinto a low power mode.

Chipset 4390 may be coupled to a first bus 4316 via an interface 4396.In one embodiment, first bus 4316 may be a Peripheral ComponentInterconnect (PCI) bus, or a bus such as a PCI Express bus or anotherthird generation I/O interconnect bus, although the scope of the presentinvention is not so limited.

As shown in FIG. 43, various I/O devices 4314 are coupled to first bus4316, along with a bus bridge 4318 which couples first bus 4316 to asecond bus 4320. In one embodiment, second bus 4320 includes a low pincount (LPC) bus. Various devices are coupled to second bus 4320including, for example, a keyboard and/or mouse 4322, communicationdevices 4327 and a storage unit 4328 such as a disk drive or other massstorage device which often includes instructions/code and data 4330, inone embodiment. Further, an audio I/O 4324 is shown coupled to secondbus 4320. Note that other architectures are possible, where the includedcomponents and interconnect architectures vary. For example, instead ofthe point-to-point architecture of FIG. 43, a system may implement amulti-drop bus or other such architecture.

Turning next to FIG. 44, an embodiment of a system on-chip (SOC) designin accordance with the inventions is depicted. As a specificillustrative example, SOC 4400 is included in user equipment (UE). Inone embodiment, UE refers to any device to be used by an end-user tocommunicate, such as a hand-held phone, smartphone, tablet, ultra-thinnotebook, notebook with broadband adapter, or any other similarcommunication device. Often a UE connects to a base station or node,which potentially corresponds in nature to a mobile station (MS) in aGSM network.

Here, SOC 4400 includes 2 cores—4406 and 4407. Similar to the discussionabove, cores 4406 and 4407 may conform to an Instruction SetArchitecture, such as an Intel® Architecture Core™-based processor, anAdvanced Micro Devices, Inc. (AMD) processor, a MIPS-based processor, anARM-based processor design, or a customer thereof, as well as theirlicensees or adopters. Cores 4406 and 4407 are coupled to cache control4408 that is associated with bus interface unit 4409 and L2 cache 4411to communicate with other parts of system 4400. Interconnect 4410includes an on-chip interconnect, such as an IOSF, AMBA, or otherinterconnect discussed above, which potentially implements one or moreaspects of described herein.

Interconnect 4410 provides communication channels to the othercomponents, such as a Subscriber Identity Module (SIM) 4430 to interfacewith a SIM card, a boot rom 4435 to hold boot code for execution bycores 4406 and 4407 to initialize and boot SOC 4400, a SDRAM controller4440 to interface with external memory (e.g. DRAM 4460), a flashcontroller 4445 to interface with non-volatile memory (e.g. Flash 4465),a peripheral control 4450 (e.g. Serial Peripheral Interface) tointerface with peripherals, video codecs 4420 and Video interface 4425to display and receive input (e.g. touch enabled input), GPU 4415 toperform graphics related computations, etc. Any of these interfaces mayincorporate aspects of the invention described herein.

In addition, the system illustrates peripherals for communication, suchas a Bluetooth module 4470, 3G modem 4475, GPS 4485, and WiFi 4485. Noteas stated above, a UE includes a radio for communication. As a result,these peripheral communication modules are not all required. However, ina UE some form a radio for external communication is to be included.

While the present invention has been described with respect to a limitednumber of embodiments, those skilled in the art will appreciate numerousmodifications and variations therefrom. It is intended that the appendedclaims cover all such modifications and variations as fall within thetrue spirit and scope of this present invention.

A design may go through various stages, from creation to simulation tofabrication. Data representing a design may represent the design in anumber of manners. First, as is useful in simulations, the hardware maybe represented using a hardware description language or anotherfunctional description language. Additionally, a circuit level modelwith logic and/or transistor gates may be produced at some stages of thedesign process. Furthermore, most designs, at some stage, reach a levelof data representing the physical placement of various devices in thehardware model. In the case where conventional semiconductor fabricationtechniques are used, the data representing the hardware model may be thedata specifying the presence or absence of various features on differentmask layers for masks used to produce the integrated circuit. In anyrepresentation of the design, the data may be stored in any form of amachine readable medium. A memory or a magnetic or optical storage suchas a disc may be the machine readable medium to store informationtransmitted via optical or electrical wave modulated or otherwisegenerated to transmit such information. When an electrical carrier waveindicating or carrying the code or design is transmitted, to the extentthat copying, buffering, or re-transmission of the electrical signal isperformed, a new copy is made. Thus, a communication provider or anetwork provider may store on a tangible, machine-readable medium, atleast temporarily, an article, such as information encoded into acarrier wave, embodying techniques of embodiments of the presentinvention.

A module as used herein refers to any combination of hardware, software,and/or firmware. As an example, a module includes hardware, such as amicro-controller, associated with a non-transitory medium to store codeadapted to be executed by the micro-controller. Therefore, reference toa module, in one embodiment, refers to the hardware, which isspecifically configured to recognize and/or execute the code to be heldon a non-transitory medium. Furthermore, in another embodiment, use of amodule refers to the non-transitory medium including the code, which isspecifically adapted to be executed by the microcontroller to performpredetermined operations. And as can be inferred, in yet anotherembodiment, the term module (in this example) may refer to thecombination of the microcontroller and the non-transitory medium. Oftenmodule boundaries that are illustrated as separate commonly vary andpotentially overlap. For example, a first and a second module may sharehardware, software, firmware, or a combination thereof, whilepotentially retaining some independent hardware, software, or firmware.In one embodiment, use of the term logic includes hardware, such astransistors, registers, or other hardware, such as programmable logicdevices.

Use of the phrase ‘configured to,’ in one embodiment, refers toarranging, putting together, manufacturing, offering to sell, importingand/or designing an apparatus, hardware, logic, or element to perform adesignated or determined task. In this example, an apparatus or elementthereof that is not operating is still ‘configured to’ perform adesignated task if it is designed, coupled, and/or interconnected toperform said designated task. As a purely illustrative example, a logicgate may provide a 0 or a 1 during operation. But a logic gate‘configured to’ provide an enable signal to a clock does not includeevery potential logic gate that may provide a 1 or 0. Instead, the logicgate is one coupled in some manner that during operation the 1 or 0output is to enable the clock. Note once again that use of the term‘configured to’ does not require operation, but instead focus on thelatent state of an apparatus, hardware, and/or element, where in thelatent state the apparatus, hardware, and/or element is designed toperform a particular task when the apparatus, hardware, and/or elementis operating.

Furthermore, use of the phrases ‘to,’ ‘capable of/to,’ and or ‘operableto,’ in one embodiment, refers to some apparatus, logic, hardware,and/or element designed in such a way to enable use of the apparatus,logic, hardware, and/or element in a specified manner. Note as abovethat use of to, capable to, or operable to, in one embodiment, refers tothe latent state of an apparatus, logic, hardware, and/or element, wherethe apparatus, logic, hardware, and/or element is not operating but isdesigned in such a manner to enable use of an apparatus in a specifiedmanner.

A value, as used herein, includes any known representation of a number,a state, a logical state, or a binary logical state. Often, the use oflogic levels, logic values, or logical values is also referred to as 1'sand 0's, which simply represents binary logic states. For example, a 1refers to a high logic level and 0 refers to a low logic level. In oneembodiment, a storage cell, such as a transistor or flash cell, may becapable of holding a single logical value or multiple logical values.However, other representations of values in computer systems have beenused. For example the decimal number ten may also be represented as abinary value of 1010 and a hexadecimal letter A. Therefore, a valueincludes any representation of information capable of being held in acomputer system.

Moreover, states may be represented by values or portions of values. Asan example, a first value, such as a logical one, may represent adefault or initial state, while a second value, such as a logical zero,may represent a non-default state. In addition, the terms reset and set,in one embodiment, refer to a default and an updated value or state,respectively. For example, a default value potentially includes a highlogical value, i.e. reset, while an updated value potentially includes alow logical value, i.e. set. Note that any combination of values may beutilized to represent any number of states.

The embodiments of methods, hardware, software, firmware or code setforth above may be implemented via instructions or code stored on amachine-accessible, machine readable, computer accessible, or computerreadable medium which are executable by a processing element. Anon-transitory machine-accessible/readable medium includes any mechanismthat provides (i.e., stores and/or transmits) information in a formreadable by a machine, such as a computer or electronic system. Forexample, a non-transitory machine-accessible medium includesrandom-access memory (RAM), such as static RAM (SRAM) or dynamic RAM(DRAM); ROM; magnetic or optical storage medium; flash memory devices;electrical storage devices; optical storage devices; acoustical storagedevices; other form of storage devices for holding information receivedfrom transitory (propagated) signals (e.g., carrier waves, infraredsignals, digital signals); etc, which are to be distinguished from thenon-transitory mediums that may receive information there from.

Instructions used to program logic to perform embodiments of theinvention may be stored within a memory in the system, such as DRAM,cache, flash memory, or other storage. Furthermore, the instructions canbe distributed via a network or by way of other computer readable media.Thus a machine-readable medium may include any mechanism for storing ortransmitting information in a form readable by a machine (e.g., acomputer), but is not limited to, floppy diskettes, optical disks,Compact Disc, Read-Only Memory (CD-ROMs), and magneto-optical disks,Read-Only Memory (ROMs), Random Access Memory (RAM), ErasableProgrammable Read-Only Memory (EPROM), Electrically ErasableProgrammable Read-Only Memory (EEPROM), magnetic or optical cards, flashmemory, or a tangible, machine-readable storage used in the transmissionof information over the Internet via electrical, optical, acoustical orother forms of propagated signals (e.g., carrier waves, infraredsignals, digital signals, etc.). Accordingly, the computer-readablemedium includes any type of tangible machine-readable medium suitablefor storing or transmitting electronic instructions or information in aform readable by a machine (e.g., a computer).

The following examples pertain to embodiments in accordance with thisSpecification. One or more embodiments may provide an apparatus, asystem, a machine readable storage, a machine readable medium, and amethod to adapt a serial data link, where adaptation of the link is toinclude receiving a pseudorandom binary sequence (PRBS) from a remoteagent, analyzing the PRBS to identify characteristics of the data link,and generating metric data describing the characteristics.

In at least one example, the physical layer logic is further to sendmetric data as feedback to the remote agent.

In at least one example, receiving the PRBS includes receiving a versionof a supersequence.

In at least one example, the metric data is based on a comparison of thereceived version of the supersequence and an expected version of thesupersequence.

In at least one example, the supersequence is to include the PRBS.

In at least one example, the supersequence is to be scrambled using thePRBS.

In at least one example, the supersequence includes a loopbacksupersequence to be sent in a master-master loopback state.

In at least one example, the metric data is to be sent over abackchannel.

In at least one example, the backchannel includes a software-implementedbackchannel.

In at least one example, the software-implemented backchannel utilizes aslow mode of an embedded clock for the data link.

In at least one example, control logic is to calibrate one or moreattributes of the link based on the metric data.

In at least one example, physical layer logic is to notify the remoteagent that adaptation of the data link is complete

In at least one example, physical layer logic is to receive anacknowledgement of completion of the adaptation from the remote agentand exit adaptation based on the acknowledgement.

In at least one example, the PRBS is a 23 bit PRBS.

In at least one example, the PRBS is to be generated using a Fibonaccilinear feedback shift register (LFSR).

In at least one example, the PRBS includes a control supersequence andat least a portion of the supersequence is scrambled using the PRBS.

In at least one example, the supersequence includes a repeating sequenceincluding an electric idle exit ordered set (EIEOS), where the sequenceis to be repeated according to a particular predefined frequency.

In at least one example, the sequence includes a defined number oftraining sequences following the EIEOS.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to adapt aserial data link, adaptation of the link is to include sending apseudorandom binary sequence (PRBS) to a remote agent, where the remoteagent is to use the PRBS to identify characteristics of the data linkand develop metric data describing the characteristics.

One or more examples can further provide receiving the metric data fromthe remote agent.

One or more examples can further provide calibrating one or moreattributes of the link based on the metric data.

One or more examples can further provide entering a loopback state andanalyzing loopback data to be received during the loopback state.

In at least one example, the loopback state includes a master-masterloopback state.

In at least one example, the loopback data includes a loopbacksupersequence scrambled using the PRBS.

In at least one example, the loopback data is to be analyzed todetermine whether the loopback data matches a supersequence sent to theremote agent during the loopback state.

In at least one example, the metric data is based at least in part onthe analysis of the loopback data.

One or more examples can further provide receiving a pseudorandom binarysequence (PRBS) from a remote agent, analyzing the PRBS to identifycharacteristics of the data link, generating metric data describing thecharacteristics, and using the metric data in adaptation of the datalink.

One or more examples can further provide sending the metric data to theremote agent for use by the remote agent in adjusting characteristics ofthe data link.

One or more examples can further provide receiving a second instance ofthe PRBS from the remote agent following the adjusting, and analyzingthe second instance of the PRBS to identify characteristics of the datalink following the adjusting.

One or more examples can further provide adapting the data link based onthe metric data.

One or more examples can further provide sending a notification to theremote agent that the data link has been adapted.

In at least one example, receiving the PRBS includes receiving asupersequence scrambled using the PRBS.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to transitionbetween states in a link training state machine, where at least somestate transitions are to be based on a respective timer and at leastsome state transitions are to be controlled.

In at least one example, at least some controlled state transitions arebased on a handshake sequence.

In at least one example, the handshake sequence includes sending of asupersequence to another device and validating that the other devicerepeats the supersequence as an acknowledgement.

In at least one example, the physical layer logic is configured tosupport a testing mode, where each of a set the state transitions are tobe based on respective timers and at least one of the set of statetransitions is a controlled state transition when in a mode outside thetesting mode.

In at least one example, at least one of the timers is to triggertransition during the testing mode at a value different than a valueused in a mode outside of the testing mode.

One or more examples can further provide supporting single stepping atleast some of the states in the state machine.

In at least one example, the single stepping is associated with a freezeon initialization abort.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to receive adata stream including flits, identify a mismatch corresponding to acontrol code received in a control window embedded in the data stream,and initiate a reset based on the mismatch.

In at least one example, the mismatch is based on a bit error.

One or more examples can further provide attempting to resolve the biterror and the mismatch is identified in response to a failure to resolvethe bit error.

In at least one example, the control code is to be from a set includinga reset request code, a low power entry request, a partial width entryrequest, and a partial width exit request.

In at least one example, the control window is to occur according to adefined interval.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to provide asynchronization counter and a layered stack including physical layerlogic, link layer logic, and protocol layer logic, where the physicallayer logic is to synchronize a reset of the synchronization counter toan external deterministic signal and synchronize entry into a linktransmitting state with the deterministic signal.

In at least one example, the physical layer logic is further toinitialize a data link using one or more supersequences.

In at least one example, entry into the link transmitting state is tocoincide with a start of data sequence (SDS) sent to end initializationof the data link.

In at least one example, the SDS is to be sent according to thedeterministic signal.

In at least one example, each supersequence includes a respectiverepeating sequence including an electric idle exit ordered set and arespective number of training sequences.

In at least one example, the SDS is to interrupt the supersequences.

In at least one example, the supersequences each include a respectiverepeating sequence including at least one electric idle exit ordered set(EIEOS) and a respective number of training sequences.

In at least one example, the EIEOS of a supersequence is to be sent soas to coincide with synchronization counter.

In at least one example, the physical layer logic is further tosynchronize to a deterministic interval based on a received EIEOS.

In at least one example, synchronizing to a deterministic interval basedon a received EIEOS includes identifying an end boundary of the receivedEIEOS.

In at least one example, the end boundary is to be used to synchronizeentry into the link transmitting state.

In at least one example, the end boundary is to be used to synchronizeexit from a partial width link transmitting state.

In at least one example, the physical layer logic is further to generatea particular supersequence and send the particular supersequence to besynchronized with the deterministic signal.

In at least one example, the physical layer logic is to specify a targetlatency to a remote agent, where the remote agent is to use the targetlatency to apply a delay to adjust actual latency to the target latency.

In at least one example, the target latency is to be communicated in apayload of a training sequence.

In at least one example, the deterministic signal includes a planetaryalignment signal for a device.

In at least one example, the physical layer logic is further tosynchronize a periodic control window embedded in a link layer datastream sent over a serial data link with the deterministic signal, wherethe control window is configured for the exchange of physical layerinformation during a link transmitting state.

In at least one example, the physical layer information includesinformation for use in initiating state transitions on the data link.

In at least one example, control windows are embedded according to adefined control interval and the control interval is based at least inpart on the deterministic signal.

One or more examples can further provide sending the supersequences to aremote agent connected to the data link during initialization of thedata link and at least one element of the supersequence is to besynchronized with the deterministic signal.

In at least one example, the element includes an EIEOS.

In at least one example, each supersequence includes a respectiverepeating sequence including at least EIEOS and a respective number oftraining sequences.

One or more examples can further provide sending a stream of link layerflits in the link transmitting state.

One or more examples can further provide synchronizing a periodiccontrol window to be embedded in the stream with the deterministicsignal, where the control window is configured for the exchange ofphysical layer information during the link transmitting state.

One or more examples can further provide sending delay information to aremote agent connected to the data link, where the delay corresponds tothe deterministic signal.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to identify atarget latency for a serial data link, receive, over the data link, adata sequence synchronized with a synchronization counter associatedwith the data link, and maintain the target latency using the datasequence.

In at least one example, the data sequence includes a supersequence toinclude a repeating sequence, where the sequence is to repeat at adefined frequency.

In at least one example, the sequence is to include an electric idleexit ordered set (EIEOS).

In at least one example, the sequence is to begin with the EIEOSfollowed by a predefined number of training sequences.

In at least one example, at least one of the training sequences includesdata identifying the target latency.

In at least one example, at least a portion of the sequence is to bescrambled using a pseudorandom binary sequence (PRBS).

One or more examples can further provide determining an actual latencyof the data link based on the receipt of the data sequence.

One or more examples can further provide determining a deviation by theactual latency from the target latency.

One or more examples can further provide causing the deviation to becorrected.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to determinewhether width of flits to be sent over a serial data link including anumber of lanes are a multiple of the number of lanes, and transmit theflits over the serial data link, where two flits are to be sent so as tooverlap on the lanes when the width of the flits is not a multiple ofthe number of lanes.

In at least one example, overlapping includes sending one or more bitsof a first of the two flits over a first portion of the number of lanesconcurrently with the sending of one or more bits of a second of the twoflits over a second portion of the number of lanes.

In at least one example, at least some bits of the flits are to betransmitted out of order.

In at least one example, flits do not overlap when the width of theflits is a multiple of the number of lanes.

In at least one example, the width of the flits include 192 bits.

In at least one example, the number of lanes includes 20 lanes in atleast one link transmitting state.

One or more examples can further provide transitioning to a differentnew link width including a second number of lanes.

One or more examples can further provide determining whether the widthof the flits are a multiple of the second number of lanes

In at least one example, the transition is to be aligned with anon-overlapping flit boundary.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to providephysical layer logic to receive a bit stream including a set of flitsover a serial data link, where respective portions of at least two ofthe set of flits are sent concurrently on lanes of the data link, andlink layer logic to reconstruct the set of flits from the received bitstream.

In at least one example, a portion of the set of flits have overlappingboundaries.

In at least one example, overlapping boundaries includes sending one ormore final bits of a first of the two flits over a first portion of thenumber of lanes concurrently with the sending of one or more beginningbits of a second of the two flits over a second portion of the number oflanes.

In at least one example, the width of the flits is not a multiple of thenumber of lanes of the data link.

In at least one example, the width of the flits include 192 bits and thenumber of lanes includes 20 lanes.

In at least one example, at least a portion of bits of the flits aretransmitted out of order.

One or more examples can further provide a physical layer (PHY)configured to be coupled to a link, the link including a first number oflanes, where the PHY is to enter a loopback state, and where the PHY,when resident in the loopback state, is to inject specialized patternson the link.

One or more examples can further provide a physical layer (PHY)configured to be coupled to a link, the link including a first number oflanes, where the PHY includes a synchronization (sync) counter, andwhere the PHY is to transmit an Electrically Idle Exit Order Set (EIEOS)aligned with the sync counter associated with a training sequence.

In at least one example, a sync counter value from the sync counter isnot exchanged during each training sequence.

In at least one example, the EIEOS alignment with the sync counter is toact as a proxy for exchanging the sync counter value from the synccounter during each training sequence.

One or more examples can further provide a physical layer (PHY)configured to be coupled to a link, the PHY to include a PHY statemachine to transition between a plurality of states, where the PHY statemachine is capable of transitioning from a first state to a second statebased on a handshake event and transitioning the PHY from a third stateto a fourth state based on a primary timer event.

In at least one example, the PHY state machine is capable oftransitioning the PHY from a fifth state to a sixth state based on aprimary time event in combination with a secondary timer event.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to embed aperiodic control window in a link layer data stream to be sent over aserial data link, where the control window is configured to providephysical layer information including information for use in initiatingstate transitions on the data link.

In at least one example, the data stream includes a series of flits.

In at least one example, the link layer data stream is sent during alink transmitting state of the data link.

One or more examples can further provide identifying a particularcontrol window in the data stream and send reset data to a deviceconnected to the data link during the particular control window, wherethe reset data is to communicate an attempt to enter a reset state fromthe link transmitting state.

One or more examples can further provide generating a supersequenceassociated with the reset state and send the supersequence to thedevice.

One or more examples can further provide identifying a particularcontrol window in the data stream and send link width transition data toa device connected to the data link during the particular controlwindow, where the link width transition data is to communicate anattempt to change the number of active lanes on the link.

In at least one example, the number of lanes are to be reduced from anoriginal number to a new number, where reducing the number of activelanes is associated with entry into a partial width link transmittingstate.

One or more examples can further provide identifying a subsequentcontrol window in the data stream and send partial width state exit datato the device during the subsequent control window, where the partialwidth state exit data is to communicate an attempt to return the numberof active lanes to the original number.

One or more examples can further provide identifying a particularcontrol window in the data stream and send low power data to a deviceconnected to the data link during the particular control window, wherethe low power data is to communicate an attempt to enter a low powerstate from the link transmitting state.

In at least one example, control windows are embedded according to adefined control interval and devices connected to the data link are tosynchronize the state transition with an end of a corresponding controlinterval.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to receive adata stream where the data stream is to include alternating transmittingintervals and control intervals, where link layer flits are to be sentduring the transmitting intervals and the control intervals are toprovide opportunities to send physical layer control information,identify control data to be included in a particular one of the controlintervals, the control data to indicate an attempted entry into aparticular state from a first state, where the data stream is to bereceived in the first state, and facilitate transition into theparticular state.

In at least one example, the particular state includes a reset state.

In at least one example, facilitating transition into the particularstate includes sending an acknowledgement of the attempted entry intothe particular state.

In at least one example, the acknowledgement is sent within the controlinterval.

In at least one example, the data stream is sent over a serial data linkincluding a plurality of active lanes and the particular state includesa partial width state, where at least a subset of lanes included in theplurality of active lanes are to become idle in the partial width state.

One or more examples can further provide identifying subsequent dataincluded in a subsequent one of the control intervals, the subsequentdata indicating an attempt to exit the partial width state andreactivate the idle lanes.

In at least one example, the particular state includes a low powertransmitting state.

In at least one example, the data stream is received over a serial datalink including a plurality of active lanes and the particular stateincludes a partial width state, where at least a subset of lanesincluded in the plurality of active lanes are to become idle in thepartial width state.

In at least one example, the particular state includes a reset state.

In at least one example, the physical layer control informationdescribes an error of the data link.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to embed aclock signal in data to be communicated from a first device over aserial data link including a plurality of lanes, and transition from afirst link transmitting state that is to use a first number of theplurality of lanes to a second link transmitting state that is to use asecond number of the plurality of lanes.

In at least one example, the second number of lanes is greater than thefirst number of lanes.

In at least one example, transitioning from the first link transmittingstate to the second link transmitting state includes sending a partialwidth state exit supersequence including one or more instances of asequence including an electrical ordered set (EOS) and a plurality ofinstances of a training sequence.

In at least one example, transitioning from the first link transmittingstate to the second link transmitting state further includes sending aninitial EOS preceding the partial width state exit supersequence.

In at least one example, null flits are to be sent on active lanesduring the sending of the initial EOS.

In at least one example, the training sequence includes an unscrambledfast training sequence (FTS).

In at least one example, transitioning from the first link transmittingstate to the second link transmitting state further includes using thepartial width state exit supersequence to initialize at least a portionof idle lanes included in the plurality of lanes.

In at least one example, transitioning from the first link transmittingstate to the second link transmitting state further includes sending astart of data sequence (SDS) following initialization of the portion ofthe idle lanes.

In at least one example, transitioning from the first link transmittingstate to the second link transmitting state further includes sending apartial FTS (FTSp) following the sending of the SDS.

In at least one example, transitioning from the first link transmittingstate to the second link transmitting state further includes receivingan acknowledgement of the transition, where the acknowledgement includesthe partial width state exit supersequence.

In at least one example, transitioning from the first link transmittingstate to the second link transmitting state includes sending an in-bandsignal over the data link to the second device.

In at least one example, the first number of lanes is greater than thesecond number of lanes.

In at least one example, the data includes a datastream includingalternating transmitting intervals and control intervals, and the signalis sent within a particular control interval and indicates thetransition from the first link transmitting state to the second linktransmitting state.

In at least one example, the transition from the first link transmittingstate to the second link transmitting state is to be synchronized withend of a particular transmitting interval immediately following theparticular control interval.

In at least one example, the transition is based on a request of a powercontrol unit.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to receive adata stream where the data stream is to include alternating transmittingintervals and control intervals, where the control intervals are toprovide opportunities to send physical layer control information, andthe data stream is to be sent over a serial data link that is to includeactive lanes and inactive lanes, identify control data included in aparticular one of the control intervals, where the data is to indicatean attempt to activate at least a portion of the inactive lanes of thelink, and facilitate activation of the portion of the inactive lanes.

In at least one example, the data stream is received while the data linkis in a partial width state and the control data is to indicate anattempt to exit the partial width state.

In at least one example, facilitating activation of the portion of theinactive lanes is to include receiving a supersequence that is toindicate the attempt to activate the portion of the inactive lanes.

In at least one example, the supersequence is to include one or moreinstances of a sequence including an electric idle exit ordered set(EIEOS) and a plurality of instances of a training sequence.

In at least one example, facilitating activation of the portion of theinactive lanes includes sending at least one initial EIEOS toimmediately precede the supersequence.

In at least one example, null flits are to be sent on the active lanesduring the sending of the initial EIEOS.

In at least one example, the training sequence includes an unscrambledfast training sequence (FTS).

In at least one example, facilitating activation of the portion of theinactive lanes further includes using the supersequence to initializethe portion of the inactive lanes.

In at least one example, facilitating activation of the portion of theinactive lanes further includes receiving a start of data sequence (SDS)following initialization of the portion of the inactive lanes.

In at least one example, facilitating activation of the portion of theinactive lanes further includes receiving a partial FTS (FTSp) followingthe SDS.

In at least one example, facilitating activation of the portion of theinactive lanes further includes acknowledging the attempt by echoing thesupersequence.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to receive adata stream where the data stream is to include alternating transmittingintervals and control intervals, where link layer flits are to be sentduring the transmitting intervals and the control intervals are toprovide opportunities to send physical layer control information,identify control data that indicates an attempted entry into a low powerstate from a link transmitting state, where the data stream is to bereceived in the link transmitting state, and transition into the lowpower state.

In at least one example, the control data includes a predefined code.

In at least one example, transitioning into the low power state includesechoing the predefined code in a subsequent control interval.

In at least one example, transitioning into the low power state includesreceiving a supersequence indicating the transition to the low powerstate.

In at least one example, transitioning into the low power state furtherincludes echoing the supersequence.

In at least one example, the supersequence includes one or moreinstances of a sequence including an electrical ordered set (EOS)followed by a predetermined number of instances of a training sequence.

In at least one example, the EOS includes an electrical idle electricalordered set (EIEOS).

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to identify aparticular instance of a periodic control interval to be embedded in adata stream on a serial data link during a link transmitting state, sendstate transition data during the particular instance of the controlinterval to a device, where the state transition data is to indicate anattempt to enter a low power state, and transition into the low powerstate.

One or more examples can further provide receiving an acknowledgementfrom the device, the acknowledgement including the state transitiondata.

In at least one example, the acknowledgement is to coincide with a nextperiodic control interval.

In at least one example, transitioning into the low power state includessending a supersequence to the device indicating the transition to thelow power state.

In at least one example, transitioning into the low power state furtherincludes receiving a repeated instance of the supersequence from thedevice.

In at least one example, the supersequence includes one or moreinstances of a sequence including an electrical ordered set (EOS)followed by a predetermined number of instances of a training sequence.

In at least one example, the EOS includes an electric idle exit orderedset (EIEOS).

In at least one example, transition into the low power state is based ona request of a power control unit.

One or more examples can further provide initiating a transition fromthe low power state to the link transmitting state.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to identifytransaction data, generate a flit to include three or more slots and afloating field to be used as an extension of any one of two or more ofthe slots, and send the flit to transmit the flit.

In at least one example, I/O logic comprises a layered stack comprisingphysical layer logic, link layer logic, and protocol layer logic

In at least one example, the three or more slots consist of threedefined slots.

In at least one example, the flit comprises 192 bits.

In at least one example, the first of the three slots comprises 72 bits,the second of the three slots comprises 70 bits, and third slotcomprises 18 bits

In at least one example, the first slot and second slot each include arespective 50 bit payload field.

In at least one example, the floating field is to extend the payloadfield of either the first slot or the second slot by eleven bits.

In at least one example, the third slot is adapted to be encoded withone or more of acknowledgements and credit returns.

In at least one example, the flit further comprises a 16-bit cyclicredundancy check (CRC) field.

In at least one example, the flit further comprises an 11-bittransaction identifier (TID) field.

In at least one example, each slot is to include a header of a distinctmessage.

In at least one example, each message is associated with a respectivetransaction within a particular virtual network.

In at least one example, the flit further comprises a virtual networkidentifier to identify the particular virtual network.

In at least one example, wherein message headers associated withtransactions in different virtual networks are to be included indistinct flits.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to receive aflit, wherein the flit is to include three or more slots to be includedin the flit and a floating field to be used as an extension of any oneof two or more of the slots, and process each slot to identify one ormore headers relating to one or more transactions.

In at least one example, the one or more headers comprise three or moreheaders.

In at least one example, each of the headers corresponds to a respectivemessage associated with a different, respective transaction.

In at least one example, each of the transactions is included in aparticular virtual network.

In at least one example, it can be identified which of the first andsecond slots the floating field is to extend.

In at least one example, the third slot is adapted to be encoded withone or more of acknowledgements and credit returns.

In at least one example, the flit can be sent from a first device to asecond device over the data link. The first second devices can includemicroprocessors, graphics accelerators, and other devices.

One or more examples can further provide a layered protocol stackincluding at least a link layer and a physical layer, the layeredprotocol stack configured to be coupled to a serial, differential link,wherein the layered protocol stack is further configured to transmit a192-bt flit over the serial, differential link.

In at least one example, the 192-bit flit includes a 16 bit CRC

One or more examples can further provide a layered protocol stackincluding at least a link layer and a physical layer, the layeredprotocol stack configured to be coupled to a serial, differential link,wherein the layered protocol stack is further configured to transmit aflit over the serial, differential link, the flit to include an 11-bittransaction identifier field.

One or more examples can further provide a layered protocol stackincluding at least a link layer and a physical layer, the layeredprotocol stack configured to be coupled to a serial, differential link,wherein the layered protocol stack is further configured to assemble aheader flit including a plurality of slots.

In at least one example, the plurality of payload slots include 3 slots.

In at least one example, the first and second slots of the 3 slots areequal in size and the third slot of the 3 slots is smaller than thefirst slot.

In at least one example, special control flits may consume all 3 slots.

In at least one example, the flit includes a 16 bit CRC.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to identifytransaction data, generate a flit from the transaction data, wherein theflit is to include two or more slots, a payload, and a cyclic redundancycheck (CRC) field to be encoded with a 16-bit CRC value generated basedon the payload, and send the flit to the device over the serial datalink.

In at least one example, the I/O logic comprises a layered stackcomprising physical layer logic, link layer logic, and protocol layerlogic

In at least one example, the two or more slots consist of three definedslots.

In at least one example, the flit comprises 192 bits.

In at least one example, the first of the three slots comprises 72 bits,the second of the three slots comprises 70 bits, and third slotcomprises 18 bits

In at least one example, the third slot is adapted to be encoded withone or more of acknowledgements and credit returns.

In at least one example, the flit payload comprises 176 bits.

In at least one example, the CRC value is generated using an XOR treeand the XOR tree is to embody a generator polynomial. The polynomial cancomprise g(x)=(x16+x15+x13+x12+x10+x9+x8+x7+x6+x4+x3+x1+1). The CRCvalue can be a rolling CRC value.

In at least one example, the data link comprises at least 8 lanes in afirst state and the flit comprises 192 bits.

In at least one example, the first state comprises a partial widthtransmitting state and a full width transmitting state comprises a 20lane link.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to receive aflit, wherein the flit is to include two or more slots, a payload, and acyclic redundancy check (CRC) field encoded with a 16-bit CRC valuegenerated based on the payload, determine a comparison CRC value fromthe payload, and compare the comparison CRC value to the CRC valueincluded in the flit.

In at least one example, one or more errors can be detected on a datalink based on the comparison.

In at least one example, the flit comprises 192 bits, a first of theslots comprises 72 bits, a second of the slots comprises 70 bits, and athird of the slots comprises 18 bits.

In at least one example, the CRC value can be derived using an XOR treethat embodies a generator polynomial. The generator polynomial cancomprises g(x)=(x16+x15+x13+x12+x10+x9+x8+x7+x6+x4+x3+x1+1).

In at least one example, the generator polynomial is the same used togenerate the CRC value included in the flit.

In at least one example, the CRC value comprises a rolling CRC value.

In at least one example, the flit can be sent between a first and seconddevice. The first and second devices can be microprocessors, graphicalaccelerators, or other devices.

One or more examples can further provide a layered protocol stackincluding at least a link layer and a physical layer, the layeredprotocol stack configured to be coupled to a serial, differential link,wherein the layered protocol stack is further configured to calculate arolling CRC for a flit to be transmitted on the link, the rolling CRC tobe based on at least two polynomial equations.

In at least one example, the second polynomial of the two is todetermine if all of 1-7 bit errors are detect, per lane burstprotection, and errors of burst length 16 or less are detected.

One or more examples can further provide a layered protocol stackincluding at least a link layer and a physical layer, the layeredprotocol stack configured to be coupled to a serial, differential link,wherein the layered protocol stack is further configured to assemble aheader flit including a plurality of slots.

In at least one example, the plurality of payload slots include 3 slots.

In at least one example, the first and second slots of the 3 slots areequal in size and the third slot of the 3 slots is smaller than thefirst slot.

One or more examples can further provide a physical layer (PHY)configured to be coupled to a serial, differential link, the PHY toperiodically issue a blocking link state (BLS), the BLS request to causean agent to enter a BLS to hold off link layer flit transmission for aduration, wherein the PHY is to utilize the serial, differential linkduring the duration for PHY associated tasks.

In at least one example, the PHY is to utilize the serial, differentiallink during the duration for PHY associated tasks comprises sending oneor more messages of a priority message list including a no-op, reset,in-band reset, entry into low power state, entry into partial widthstate, entry into other PHY state, etc.

One or more examples can further provide a physical layer (PHY)configured to be coupled to a link, the link including a first number oflanes, wherein the PHY is to transmit flits over the first number oflanes in a full width transmitting link state, and wherein the PHY is totransmit flits over a second number of lanes, which is less than thefirst number of lanes, in a partial-width transmitting link state.

In at least one example, the PHY is to utilize a blocking link state toenter the partial-width transmitting link state from the blocking linkstate.

In at least one example, the flits have the same size when transmittingover the first number of lanes and the second number of lanes.

In at least one example, the PHY utilizes an embedded clock fortransmitting over the first number of lanes and over the second numberof lanes.

In at least one example, the PHY utilizes an embedded clock fortransmitting over the first number of lanes and a forwarded clock fortransmitting over the second number of lanes.

One or more embodiments may provide an apparatus including a physicallayer (PHY) configured to be coupled to a serial, differential link thatis to include a number of lanes, the PHY to include a transmitter and areceiver to be coupled to each lane of the number of lanes. Thetransmitter coupled to each lane can be configured to embed a clock withdata to be transmitted over the lane, and the PHY can periodically issuea blocking link state (BLS) request to cause an agent to enter a BLS tohold off link layer flit transmission for a duration. The PHY canutilize the serial, differential link during the duration for a PHYassociated task selected from a group including an in-band reset, anentry into low power state, and an entry into partial width state.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to receive atraining sequence, where at least a portion of the training sequence isto be scrambled through use of a pseudo random bit sequence (PRBS) andat least a header of the training sequence is to be unscrambled, andperform adaptation of a link based at least in part on the scrambledportion of the training sequence. An apparatus can include physicallayer logic to receive the training sequence and perform the adaptationof the link.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to generate aheader flit that is to comprise at least three slots, where the headerflit is to include at least 192 bits, a transaction identifier of atleast 11 bits, a cyclical redundancy check field of at least 16 bits,and a floating field to expand any one of two or more of the threeslots. An apparatus can include link layer logic to generate the headerflit.

Reference throughout this specification to “one embodiment” or “anembodiment” means that a particular feature, structure, orcharacteristic described in connection with the embodiment is includedin at least one embodiment of the present invention. Thus, theappearances of the phrases “in one embodiment” or “in an embodiment” invarious places throughout this specification are not necessarily allreferring to the same embodiment. Furthermore, the particular features,structures, or characteristics may be combined in any suitable manner inone or more embodiments.

In the foregoing specification, a detailed description has been givenwith reference to specific exemplary embodiments. It will, however, beevident that various modifications and changes may be made theretowithout departing from the broader spirit and scope of the invention asset forth in the appended claims. The specification and drawings are,accordingly, to be regarded in an illustrative sense rather than arestrictive sense. Furthermore, the foregoing use of embodiment andother exemplarily language does not necessarily refer to the sameembodiment or the same example, but may refer to different and distinctembodiments, as well as potentially the same embodiment.

What is claimed is:
 1. An apparatus comprising: a port to couple to adevice over a link, wherein the port comprises: protocol circuitry to:implement a cache coherent interconnect protocol on the link; andgenerate a flit with a format defined in accordance with the cachecoherent interconnect protocol, wherein the flit comprises at leastthree slots and a cyclic redundancy check (CRC) code based on theformat, and each of the three slots is capable of carrying at least aportion of a different message; and a transmitter to send the flit toanother device over the link.
 2. The apparatus of claim 1, wherein eachof the at least three slots has a respective defined size according tothe format.
 3. The apparatus of claim 1, wherein the portion of therespective message comprises header data of the message.
 4. Theapparatus of claim 1, wherein the portion of the respective messagecomprises payload data of the message.
 5. The apparatus of claim 4,wherein one of the at least three slots is capable of carrying bothheader data and payload data of the message.
 6. The apparatus of claim1, wherein the format defines that the flit further comprises a creditreturn field.
 7. The apparatus of claim 1, wherein the format definesthat the flit further comprises a type field to indicate a type of theflit from a plurality of types.
 8. The apparatus of claim 7, wherein theplurality of types comprises a link layer control flit or a protocolflit corresponding to the cache coherent interconnect protocol.
 9. Theapparatus of claim 1, wherein the format defines that the flit furthercomprises an OpCode field.
 10. The apparatus of claim 1, wherein theformat defines that the flit further comprises an acknowledgement field.11. The apparatus of claim 1, wherein the CRC code comprises a 16-bitCRC code.
 12. A method comprising: identifying a set of messages to besent on a link from a first device to a second device, wherein the linkcouples the first device to the second device and the link is compliantwith a cache coherent interconnect protocol; generating a set of flitsaccording to the cache coherent interconnect protocol, wherein each flitin the set of flits comprises a plurality of slots, each of the slots isto carry at least a portion of a respective message in the set ofmessages, a first one of the plurality of slots in a first one of theset of flits is to carry a portion of a first one of the set ofmessages, and a second one of plurality of slots in the first flit is tocarry a portion of a second one of the set of messages; and sending theset of messages from the first device to the second device in the set offlits.
 13. The method of claim 12, further comprising calculating arespective cyclic redundancy check (CRC) value for each one of the setof flits, wherein each of the set of flits comprises a CRC field toinclude the corresponding calculated CRC value.
 14. The method of claim12, wherein each of the set of flits further comprises a respectivecredit return field, and the method further comprises: identify a creditreturn; and set a value in the credit return field of one of the set offlits to identify the credit return.
 15. The method of claim 12, whereinthe portion of the first message comprises one or both of header data ofthe first message or payload data of the first message.
 16. A systemcomprising: a first device; and a second device coupled to the firstdevice by a link, wherein the link is compliant with a cache coherentinterconnect protocol, and the second device comprises protocolcircuitry to support the interconnect protocol and the protocolcircuitry is to: generate a flit with a format defined in accordancewith the interconnect protocol, wherein the flit comprises at leastthree slots and a cyclic redundancy check (CRC) code based on theformat, and each of the three slots is capable of carrying at least aportion of a different message; and send the flit to another device overthe link.
 17. The system of claim 16, wherein the format further definesthat the flit further comprises an acknowledgement field, a creditreturn field, a type field, and an opcode field.
 18. The system of claim16, wherein the first device comprises a first processor device and thesecond device comprises a second processor device.
 19. The system ofclaim 16, wherein one of the first device or the second device comprisesan accelerator device.
 20. The system of claim 16, wherein one of thefirst device or the second device comprises a memory device.